<aside> ๐๐ป https://inpa.tistory.com/entry/NODE-๐-์ด๋ฒคํธ-๋ฃจํ-๐-setTimeout-setImmediate-processnextTick
</aside>
์ด๋ฒคํธ ๋ฃจํ๋ Node.js ์ Main Thread๋ก, ๋ด๋ถ์ ๊ฐ Phase ๋ฅผ ๋๋ฉด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ค.
์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๊ฐ Phase ๋ Queue๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
Queue์ ๋ฑ๋กํ Callback ๋ค์ด ์๋ง๊ฒ ๋ด๊ฒจ์ ์์ ์ ์คํ์ ๊ธฐ๋ค๋ฆฌ๊ฒ๋๋ค.
๊ฐ Phase ๋ ์์ Queue ์ ๋ชจ๋ job์ ์ํํ๊ณ ๋, ์ ํ ๊ฐฏ์๊น์ง ์คํํ ํ์ ๋ค์ Phase๋ก ์ด๋ํ๋ค.

<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()์ ๋น์ทํ์ง๋ง, ์ธ์ ํธ์ถ๋๋๋์ ๋ค๋ผ ๋ค๋ฅด๊ฒ ํ๋ํ๋ค.
ํ์ด๋จธ๊ฐ ์คํ๋๋ ์์๋ ํธ์ถ๋๋ ์ปจํ ์คํธ ์์ ์ ๋ฐ๋ผ ๋ค๋ฅด๋ค.