โจ
EventLoop
March 12, 2022
๐๐ป JavaScript์ ๋ฐํ์ ๋ชจ๋ธ์ ์ฝ๋์ ์คํ, ์ด๋ฒคํธ์ ์์ง๊ณผ ์ฒ๋ฆฌ, ํ์ ๋๊ธฐ ์ค์ธ ํ์ ์์ ์ ์ฒ๋ฆฌํ๋ย ์ด๋ฒคํธ ๋ฃจํ์ ๊ธฐ๋ฐํ๊ณ ์์ต๋๋ค.
์ด๋ฒคํธ ๋ฃจํ
- ํ: ๋จ์ํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ง์นญํ๋ ์ฉ์ด. ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด ์ด๋ฃจ์ด์ง๋ ๊ณณ์ผ๋ก ๋ณ์ ๋ฑ์ ์ ๋ณด ์ ์ฅ.
- (์ฝ์คํ์ ์ต์๋จ์ ์๋ ์คํ ์ปจํ ์คํธ๊ฐ ์คํ๋๋ฉด์ ์ฐธ์กฐ๋๋ ๊ฐ์ฒด๋ค์ด ์ ์ฅ๋์ด ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ)
- ์ฝ์คํ: ์คํํ๋ ์ฝ๋๋ฅผ ์์๋๋ก ์คํํ๋ ๊ณณ
- (์คํ ์ปจํ ์คํธ๊ฐ ์ถ๊ฐ๋๊ฑฐ๋ ์ ๊ฑฐ๋๋ฉฐ ์ฝ๋์ ์คํ์์๋ฅผ ๊ด๋ฆฌ)
- ์ฝ๋ฐฑํ: ์ฒ๋ฆฌํ ๋ฉ์์ง์ ๋๊ธฐ์ด
- (๋น๋๊ธฐ ํจ์์ ์ฝ๋ฐฑํจ์ ๋๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ์ผ์์ ์ผ๋ก ๋๊ธฐ)
์์ ๋ก ์ฝ์คํ ๋ด๋ถ ํ์ธํ๊ธฐ
// main
function task(message) {
// emulate time consuming task
let n = 10000000000;
while (n > 0) {
n--;
}
console.log(message);
}
console.log('Start script...');
task('Call an API');
console.log('Done!');
์ด๋ฒคํธ๋ฃจํ ์๋ ํ์ธํ๊ธฐ
function greet() {
console.log('Hello!');
}
function respond() {
return setTimeout(() => {
console.log('Hey!');
}, 1000);
}
greet();
respond();
- greet ํธ์ถ => respond ํธ์ถ
- Web API์ธ setTimout ํธ์ถ, setTimeout์ cb ์ ๋ฌ
- cb๋ 1์ด๋ค์ ์ฝ๋ฐฑํ๋ก ์ ๋ฌ
- ์ฝ์คํ ๋น์ด์์ ๋, ์ฝ๋ฐฑํ์ ์๋ ๋๊ธฐ ์์ ํ๋์ฉ ์ ๋ฌ
- cb ์คํ
์ฐธ๊ณ ์๋ฃ