๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฌธ๋ฒ
๋งค๊ฐ๋ณ์๋ก ํจ์๋ฅผ ๊ฐ์ฒด๋ก ์ ๋ฌํด์ ํธ์ถ ํจ์ ๋ด์์ ๋งค๊ฐ๋ณ์ ํจ์๋ฅผ ์คํํ๋ ๊ฒ
ํ๋ผ๋ฏธํฐ๋ก ์ผ๋ฐ์ ์ธ ๋ณ์๋ ๊ฐ์ ์ ๋ฌํ๋๊ฒ ์๋ โํจ์ ์์ฒด๋ฅผ ์ ๋ฌโํ๋ ๊ฐ๋
๋งค๊ฐ๋ณ์์ ํจ์๋ฅผ ์ ๋ฌํด ์ผํ์ฉ์ผ๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ํจ์๋ฅผ ๋๊ฒจ์ค ๋ โ์ต๋ช ํจ์โ ํํ๋ก ๋ฃ์ด์ค.
function sayHello(name, callback) {
const words = '์๋
ํ์ธ์ ๋ด ์ด๋ฆ์ ' + name + ' ์
๋๋ค.';
callback(words);
}
sayHello("์ธํ", function (name) { // ํจ์์ ์ด๋ฆ์ด ์๋ ์ต๋ช
ํจ์
console.log(name);
});
์ต๋ช ํจ์ ์ฌ์ฉ
ํ์ดํ ํจ์ ๋ชจ์์ ์ฝ๋ฐฑ
var name = "Alice";
callback(name); // ์ฝ๋ฐฑ ํจ์ ํธ์ถ
}
// ์ต๋ช
ํ์ดํ ์ฝ๋ฐฑ ํจ์
sayHello((name) => {
console.log("Hello, " + name);
}); // Hello, Alice
์ฝ๋ฐฑ ํจ์์ ์ฌ์ฉ
์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ฑ๋กํ๋ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ก ์ฝ๋ฐฑํจ์ ์ฌ์ฉ๋จ.
๊ณ ์ฐจํจ์์ ์ฌ์ฉ
// numbers ๋ฐฐ์ด์ ๊ฐ ์์์ ๋ํด ์ฝ๋ฐฑ ํจ์ ์คํ
numbers.forEach(function (num) {
doubled.push(num * 2); // ์ฝ๋ฐฑ ํจ์๋ก ๊ฐ ์์ ์ฒ๋ฆฌ
});
ํ์ด๋จธ ์คํ ํจ์๋ก ์ฌ์ฉ (setTimeout, setInterval)
setTimeout(function () {
console.log("Time is up!"); // ์ฝ๋ฐฑ ํจ์๋ก ์ฝ์์ ๋ฉ์์ง ์ถ๋ ฅ
}, 3000);
์ฝ๋ฐฑ ์ง์ฅ (Callback Hell)
๋ณ๋ ฌ์ฒ๋ฆฌ์ ์ค๋ ๋
์ค๋ ๋ ํ
๊ฐ์ฒด์งํฅ ์ค๊ณ์ ๋ฐ์ดํฐ ํ๋ฆ
์ด๋ฒคํธ ํ
์ด๋ฒคํธ ํธ๋ค๋ฌ
Promise

Promise.all()
Promise.allSettled()
Promise.any()
Promise.race()
Event Emitter
emitter.on(event, listener):ย addListener() ์ด๋ฒคํธ๋ฅผ ์์ฑ ๋ฉ์๋
emitter.addListener(event, listener):ย on()ย ๋ฉ์๋์ ๋์ผ
emitter.once(event, listener): ์ด๋ฒคํธ๋ฅผ ํ ๋ฒ๋ง ์ฐ๊ฒฐํ ํ ์ ๊ฑฐ
emitter.removelistener(event, listener): ํน์ ์ด๋ฒคํธ์ ํน์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ ๊ฑฐ
emitter.removeAllListeners([event]): ๋ชจ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ ๊ฑฐ
emitter.setMaxListeners(n): n์ผ๋ก ํ ์ด๋ฒคํธ์ ์ต๋ํ์ฉ ๊ฐ์๋ฅผ ์ง์
node.js๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ํ ์ด๋ฒคํธ์ 10๊ฐ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์์ฑํ ์ ์๋๋ฐ, 11๊ฐ ์ด์์ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด n๊ฐ์ ๋๊ฒจ์ฃผ๋ฉด ๋จ.
n๊ฐ์ผ๋ก 0์ ๋๊ฒจ์ฃผ๋ฉด ์ฐ๊ฒฐ ๊ฐ์ ์ ํ ์ฌ๋ผ์ง
emitter.emit(eventName[, ...args]): ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํด