<aside> ๐Ÿ’๐Ÿป https://inpa.tistory.com/entry/NODE-๐Ÿ“š-์ด๋ฒคํŠธ-๋ฃจํ”„-๐Ÿ”-setTimeout-setImmediate-processnextTick

</aside>

Event Loop

์ด๋ฒคํŠธ ๋ฃจํ”„๋Š” Node.js ์˜ Main Thread๋กœ, ๋‚ด๋ถ€์˜ ๊ฐ Phase ๋ฅผ ๋Œ๋ฉด์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•œ๋‹ค.

์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๊ฐ Phase ๋Š” Queue๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

Queue์— ๋“ฑ๋กํ•œ Callback ๋“ค์ด ์•Œ๋งž๊ฒŒ ๋‹ด๊ฒจ์„œ ์ž์‹ ์˜ ์‹คํ–‰์„ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ๋œ๋‹ค.

๊ฐ Phase ๋Š” ์ž์‹  Queue ์˜ ๋ชจ๋“  job์„ ์ˆ˜ํ–‰ํ•˜๊ณ ๋‚˜, ์ œํ•œ ๊ฐฏ์ˆ˜๊นŒ์ง€ ์‹คํ–‰ํ•œ ํ›„์— ๋‹ค์Œ Phase๋กœ ์ด๋™ํ•œ๋‹ค.

Untitled

<aside> ๐Ÿ’ก ์ด ์ค‘์—์„œ timers, poll, check ๋‹จ๊ณ„๋งŒ ํ•„์š”ํ•˜๋‹ค

</aside>

Phase ๋Œ€์ƒ ์ฒ˜๋ฆฌ ์ž‘์—…
timer setTimeout(func, delay) setInterval(func, delay) delay ๊ฐ€ ์ง€๋‚ฌ์œผ๋ฉด, ๋“ฑ๋ก๋œ Callback ์‹คํ–‰
poll I/O ๋Œ€๋ถ€๋ถ„์˜ Callback ์‹คํ–‰
check setImmediate(func) ๋“ฑ๋ก๋œ Callbck ์‹คํ–‰

setImmediate()์™€ setTimeout()

setImmediate() ์™€ setTimeout()์€ ๋น„์Šทํ™”์ง€๋งŒ, ์–ธ์ œ ํ˜ธ์ถœ๋˜๋А๋ƒ์— ๋‹ค๋ผ ๋‹ค๋ฅด๊ฒŒ ํ–‰๋™ํ•œ๋‹ค.

ํƒ€์ด๋จธ๊ฐ€ ์‹คํ–‰๋˜๋Š” ์ˆœ์„œ๋Š” ํ˜ธ์ถœ๋˜๋Š” ์ปจํ…์ŠคํŠธ ์‹œ์ ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค.