
https://luv-n-interest.tistory.com/1112
๐ก ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๊ณ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ
โ Node.js์์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ฐฉ์ ์ค ํ๋
โ EventEmitter ํด๋์ค๋ฅผ ์์ํ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ , on() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ๋ฑ๋กํ๋ฉด, ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋๋ง๋ค ๋ฑ๋ก๋ ์ฝ๋ฐฑ ํจ์๊ฐ ์คํ
โ ์ด๋ฒคํธ๋ ๋ฌธ์์ด ํํ์ ์ด๋ฆ๊ณผ ํจ๊ป ๋ฐ์, ์ด๋ฒคํธ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ ํ์ ์ผ๋ก ์ ๋ฌ ๊ฐ๋ฅ
const EventEmitter = require('events');
// CustomEventEmitter ํด๋์ค๋ฅผ ์์ฑํฉ๋๋ค.
class CustomEventEmitter extends EventEmitter {}
// CustomEventEmitter ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ๋ง๋ญ๋๋ค.
const customEmitter = new CustomEventEmitter();
// ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ๋ฑ๋กํฉ๋๋ค.
customEmitter.on('customEvent', (arg1, arg2) => {
console.log('์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ต๋๋ค.', arg1, arg2);
});
// ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํต๋๋ค.
customEmitter.emit('customEvent', 'hello', 'world');
๐ก ๋น๋๊ธฐ ์์ ์ ์ฑ๊ณต ๋๋ ์คํจ ์ํ๋ฅผ ์ฝ๊ฒ ํ์ธํ๊ณ ์ฒ๋ฆฌ (๋น๋๊ธฐ ์์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌ)
๐ก ์ฌ๋ฌ ๊ฐ์ ์ฝ๋ฐฑ ํจ์๋ฅผ ๋์์ ์ฒ๋ฆฌ (์ด๋ฒคํธ ๊ธฐ๋ฐ ํ๋ก๊ทธ๋๋ฐ์์ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌ)
โ ์ฅ์ :
โ ๋จ์ :
๐ก ๋น๋๊ธฐ ์์ ์ ๊ฒฐ๊ณผ๋ฅผ Promise ๊ฐ์ฒด๋ก ๋ฐํํ์ฌ Promise ๊ฐ์ฒด๊ฐ ์ฑ๊ณต ๋๋ ์คํจ ์ํ๊ฐ ๋๋ฉด EventEmitter๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์, ๋ ํจ์จ์ ์ผ๋ก ๋น๋๊ธฐ ์์ ์ฒ๋ฆฌ ๊ฐ๋ฅ