๐ŸŒŸJS:๋™๊ธฐ ๋น„๋™๊ธฐ

hojuneยท2023๋…„ 9์›” 8์ผ
0

Web Development

๋ชฉ๋ก ๋ณด๊ธฐ
19/33
๋™๊ธฐ = ๋™์‹œ์— ์ผ์–ด๋‚˜๋Š”
๋น„๋™๊ธฐ = ๋™์‹œ์— ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”
์š”์ฒญ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๊ทธ์ž๋ฆฌ์—์„œ ๋™์‹œ์— ์ผ์–ด๋‚˜์•ผ ํ•˜์ง€๋งŒ ๋น„๋™๊ธฐ๋Š” ๊ทธ๋ ‡์ง€ ์•Š๋‹ค
js ๋™์ž‘์›๋ฆฌ
์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด = ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ ์ฝœ ์Šคํ…๋งŒ์„ ๊ฐ€์ง„๋‹ค 
= ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์€ ๋™์‹œ์— ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋งŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค

์Šคํ…์€ ๊ตฌ๋ฉ์ด ํ•˜๋‚˜์ธ ์ƒ์ž ํ๋Š” ๊ตฌ๋ฉ์ด ๋‘๊ฐœ์ธ ์ƒ์ž
๋™๊ธฐ ๋น„๋™๊ธฐ

js๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด(ํ•˜๋‚˜์˜ ์ฝœ ์Šคํƒ์„ ๊ฐ€์กŒ๋‹ค) ์ด๊ณ  ๋™๊ธฐ์  ์–ธ์–ด๋กœ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
ํ•˜๋‚˜์˜ ์‹คํ–‰์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›๊ธฐ๊นŒ์ง€ ๋‹ค๋ฅธ ์‹คํ–‰์„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 
๋ณดํ†ต ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ js์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š”๋ฐ ๋ธŒ๋ผ์šฐ์ €๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋กœ ์ž‘๋™๋˜๋Š” 
js์—”์ง„๋งŒ ์žˆ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๋‚ด์žฅ๋œ ์›น api๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 
js ์ฝ”๋“œ๋‚ด์—์„œ ๋น„๋™๊ธฐ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š” ์š”์†Œ๊ฐ€ ์ƒ๊ธด๋‹ค๋ฉด js๋Š” ์ž์‹ ์ด ๊ทธ ์š”์†Œ๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๊ณ  
web api๋กœ ๋„˜๊น๋‹ˆ๋‹ค. web api์—์„œ ํ•ด๋‹น ๋‚ด์šฉ์ด ์ฒ˜๋ฆฌ๋˜๊ณ  ์ฝœ๋ฐฑ ํ๋กœ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์„œ ์ด๋ฒคํŠธ๋ฃจํ”„๋ผ๋Š” ์š”์†Œ๊ฐ€ ์‚ฌ์šฉ๋˜๋Š”๋ฐ ์ด๋ฒคํŠธ ๋ฃจํ”„๋Š” js์—”์ง„์˜ ์ฝœ ์Šคํƒ์„ ์ง€์†์ ์œผ๋กœ ๋ฐ”๋ผ๋ณด๊ณ  ์žˆ๋‹ค๊ฐ€,
์ฝœ ์Šคํƒ์ด ๋น„๋ฉด ์šฐ์„ ์ˆœ์œ„์—๋”ฐ๋ผ ๋Œ€๊ธฐ์ค‘์ธ ํ์— ๋Œ€๊ธฐ์ค‘์ธ ์š”์†Œ๋“ค์„ ์ฝœ ์Šคํƒ์œผ๋กœ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค.

์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๋™์‹œ์„ฑ ๋ฌธ์ œ๋ฅผ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋œ๋‹ค. 
์‚ฌ์šฉ์ž์—๊ฒŒ ์žˆ์–ด์„œ ํ™”๋ฉด์ด๋ผ๋Š” ์ž์›์— ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ๋ฌธ์ œ๊ฐ€
๋ฐœ์ƒํ•  ์—ฌ์ง€๊ฐ€ ์ƒ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์‚ฌ์ „์— ๋ฐฉ์ง€ ํ•  ์ˆ˜ ์žˆ๋‹ค.


๋™๊ธฐ ๋™์ž‘ ์›๋ฆฌ
1. ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋ฉด ์ˆœ์„œ๋Œ€๋กœ call stack์— ์‹คํ–‰ํ•  ํ•จ์ˆ˜๊ฐ€ ์Œ“์ธ๋‹ค (push)
2. ์Œ“์ธ ๋ฐ˜๋Œ€ ์ˆœ์„œ๋กœ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋œ๋‹ค. (lifo)
3. ์‹คํ–‰์ด ๋œ ํ•จ์ˆ˜๋Š” call stack์—์„œ ์ œ๊ฑฐ๋œ๋‹ค(pop)

๋น„๋™๊ธฐ ๋™์ž‘ ์›๋ฆฌ
1. call stack์—์„œ ๋น„๋™๊ธฐ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด call stack์— ๋จผ์ € ์Œ“์˜€๋‹ค๊ฐ€ web api(=๋ฐฑ๊ทธ๋ผ์šด๋“œ)๋กœ ์ด๋™ํ•œ ํ›„ ํ•ด๋‹น ํ•จ์ˆ˜๊ฐ€ ๋“ฑ๋ก๋˜๊ณ  call stack์—์„œ ์‚ฌ๋ผ์ง„๋‹ค.
2. web api(๋ฐฑ๊ทธ๋ผ์šด๋“œ)์—์„œ ๋น„๋™๊ธฐ ํ•จ์ˆ˜์˜ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, ํ•ด๋‹น ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” callback queue์— push(์ด๋™)๋œ๋‹ค.
3. ์ด์ œ call stack์ด ๋น„์–ด์žˆ๋Š”์ง€ ์ด๋ฒคํŠธ ๋ฃจํ”„๊ฐ€ ํ™•์ธ ํ•˜๋Š”๋ฐ ๋งŒ์•ฝ ๋น„์–ด์žˆ์œผ๋ฉด, call stack์— callback queue์— ์žˆ๋Š” ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ๋„˜๊ฒจ์ค€๋‹ค.(push)
4.call stack์— ๋“ค์–ด์˜จ ํ•จ์ˆ˜๋Š” ์‹คํ–‰์ด ๋˜๊ณ  ์‹คํ–‰์ด ๋๋‚˜๋ฉด call stack์—์„œ ์‚ฌ๋ผ์ง„๋‹ค

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ฝ”๋“œ๋Š” ์ด๋ฒคํŠธ ๋ฃจํ”„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜๋ฅผ 
์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ํ˜•์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฉ”์ธ '์ฝœ ์Šคํƒ'์ด ์žˆ๊ณ , ์ด ์ฝœ ์Šคํƒ์ด ๋น„์—ˆ์„ ๋•Œ๋งˆ๋‹ค 
'์ฝœ๋ฐฑ ํ'์—์„œ ๋Œ€๊ธฐ ์ค‘์ธ ํ•จ์ˆ˜๋ฅผ ์ฝœ ์Šคํƒ์œผ๋กœ ๋ถˆ๋Ÿฌ์™€ ์‹คํ–‰์‹œํ‚ต๋‹ˆ๋‹ค.

setTimeout์ด๋‚˜ ajax ๊ฐ™์€ ๋น„๋™๊ธฐ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด, ํ•ด๋‹น ์ž‘์—…์€ ๋ธŒ๋ผ์šฐ์ €์— ๋‚ด์žฅ๋œ 
WebAPI์—๊ฒŒ ๋„˜๊ฒจ์ง‘๋‹ˆ๋‹ค. ๊ทธ ์•ˆ์—์„œ ํƒ€์ด๋จธ๊ฐ€ ๋™์ž‘์„ ํ•˜๊ฑฐ๋‚˜ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ์ง„ํ–‰ํ•˜๊ณ ,
์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ์ค€๋น„๊ฐ€ ๋˜๋ฉด ์ฝœ๋ฐฑ ํ์— ํ•ด๋‹น ์ž‘์—…์„ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์‚ฌ์‹ค์ƒ 
๋น„๋™๊ธฐ ํ•จ์ˆ˜๊ฐ€ ๋™๊ธฐ์ ์ธ ํ•จ์ˆ˜๋“ค๊ณผ '๋™์‹œ'์— ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ, 
์ด๋Š” ์•„์ฃผ ์žฌ๋น ๋ฅด๊ฒŒ ์ฝœ ์Šคํƒ์— ๋„˜์–ด์™€ ์‹คํ–‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋ชจ๋“  ๊ฑด 
์ˆœ์ฐจ์ ์œผ๋กœ ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ(์ฝœ ์Šคํƒ) ์•ˆ์—์„œ ๋Œ์•„๊ฐ€๊ณ  ์šฐ๋ฆฌ๋Š” ๊ทธ์ € ์ด ์‹œ๊ฐ„ ์ฐจ๊ฐ€ ๋„ˆ๋ฌด ์ž‘์•„์„œ 
๋™์‹œ์— ๋Œ์•„๊ฐ„๋‹ค๊ณ  ์ฐฉ๊ฐ์„ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค

web api

๊ฐœ๋ฐœ์ž๊ฐ€ ๋ธŒ๋ผ์šฐ์ € ์ƒ์—์„œ ์‰ฝ๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๊ฐ์ฒด ๋ชจ์Œ๋“ค์ด๋‹ค. 
์›น ap(๋” ajax settimeout)i๋ฅผ ์ด์šฉํ•ด์„œ ๋” ์š”์†Œ๋ฅผ ์กฐ์ž‘ํ•˜๊ฑฐ๋‚˜ ์ผ๋ถ€ ์˜์—ญ์„ ์—…๋ฐ์ดํŠธ์‹œํ‚ค๊ณ  
๋น„๋””์˜ค,์˜ค๋””์˜ค,๊ทธ๋ž˜ํ”ฝ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ฐ์ฒด ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๊ณ  ์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ๊ฐ€ ์กด์žฌํ•œ๋‹ค

0๊ฐœ์˜ ๋Œ“๊ธ€