๐Ÿ“ŒLanguage/JavaScript

TIL) ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋น„๋™๊ธฐ์™€ setTimeout

hellohailie 2022. 5. 28. 23:35

 

 

๋น„๋™๊ธฐ๋ž€?
๋™์‹œ์— ์—ฌ๋Ÿฌ ์ž‘์—…์„ ํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค!

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋‹จ์ผ ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜์˜ ์–ธ์–ด๋กœ ํ•œ ์ˆœ๊ฐ„ ํ•˜๋‚˜์˜ ์ž‘์—…๋งŒ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋น„ ๋™๊ธฐ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ผ ์Šค๋ ˆ๋“œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋™์‹œ์— ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. => ๋น„๋™๊ธฐ

=> ์ฃผ์˜ํ•  ์ ! ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด ์ž์ฒด๊ฐ€ ๋น„๋™๊ธฐ ๋™์ž‘์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

 

๋น„ ๋™๊ธฐ๋กœ ๋™์ž‘ํ•˜๋Š” ํ•ต์‹ฌ์š”์†Œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๊ฐ€ ์•„๋‹ˆ๋ผ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ €๋Š” Web APIs, Event Table, Callback Queue, Event Loop ๋“ฑ์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ๋ธŒ๋ผ์šฐ์ €์™€์˜ ๋™์ž‘์€ ์•„๋ž˜ ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

  • Web APIs: setTimeout์ด Call Stack์— ๋“ค์–ด์™€ ์‹คํ–‰๋˜๋ฉด Browser API์ธ timer๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
  • Event Table: ํŠน์ • event(timeout, click, mouse move ๋“ฑ๋“ฑ)๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์–ด๋–ค callback ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜์•ผ ํ•˜๋Š”์ง€๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค. 
  • Callback Queue: ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ ์‹คํ–‰ํ•ด์•ผ ํ•  callback ํ•จ์ˆ˜๊ฐ€ Callback Queue์— ์ถ”๊ฐ€๋œ๋‹ค.
  • Event Loop: Call Stack์ด ๋น„์–ด์žˆ์„ ๊ฒฝ์šฐ, Callback queue์—์„œ ํ•จ์ˆ˜๋ฅผ ๊บผ๋‚ด Call Stack์— ์ถ”๊ฐ€ํ•œ๋‹ค.

 

 

๐Ÿ‘‡์•„๋ž˜ ๋งํฌ๋กœ js event loop์— ๋Œ€ํ•ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.๐Ÿ‘‡

 

์ฐธ์กฐ *์ด๋ฒคํŠธ ๋ฃจํ”„*

https://medium.com/sjk5766/javascript-%EB%B9%84%EB%8F%99%EA%B8%B0-%ED%95%B5%EC%8B%AC-event-loop-%EC%A0%95%EB%A6%AC-422eb29231a8


 

setTimeout ํ•จ์ˆ˜

setTimeout ํ•จ์ˆ˜์˜ ์ฒซ๋ฒˆ์งธ ์ธ์ž๋Š” ๊ธฐ๋‹ค๋ฆฐ ํ›„์— ์‹คํ–‰์‹œํ‚ฌ ํ•จ์ˆ˜, ๊ทธ ๋‹ค์Œ์€ ๊ธฐ๋‹ค๋ฆด ๋ฐ€๋ฆฌ์ดˆ(delay) ์ด๋‹ค. 

 

ํ•˜์ง€๋งŒ setTimeout์˜ delay์ธ์ž๊ฐ€ delay ms ํ›„์— ์‹คํ–‰ ๋˜๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ •ํ™•ํžˆ๋Š” delay ms ํ›„์— Callback Queue์— ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•œ๋‹ค.

 

์™œ๋ƒํ•˜๋ฉด!

setTimeout์˜ delay ms ํ›„์— ์ด๋ฏธ call stack์— ๋‹ค์Œ ํ•จ์ˆ˜๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค๋ฉด, ์ฆ‰ call stack์ด ๋น„์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด Event Loop๋Š” callback queue์— ์žˆ๋Š” setTimeout์˜ ๊ฒฐ๊ณผ ํ•จ์ˆ˜๋ฅผ ๊ฑฐ๋“ค๋– ๋ณด์ง€ ์•Š๋Š”๋‹ค.