๐ท 12์ผ์ฐจ (23_10_03) ๐ท
โ
์ค๋ ๋ํ๊ณผ ์ปค์คํ
์ด๋ฒคํธ
โ
์๋ฌ ์ฒ๋ฆฌํ๊ธฐ
๐์ค๋ ๋ํ๊ณผ ์ปค์คํ
์ด๋ฒคํธ
โจ์ค๋ ๋ํ
- fs, crypto, zlib ๋ชจ๋์ ๋ฉ์๋๋ฅผ ์คํํ ๋๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋์์ ์คํ๋จ
- ์ค๋ ๋ํ์ด ๋์์ ์ฒ๋ฆฌํด์ค
- node ์์๋ 4๊ฐ๊ฐ ์ต๋
- ๋ณธ์ธ ์ฝ์ด์ ๋ง๊ฒ ์คํ๋๋๋ก ๋ช
๋ น์ด๋ฅผ ํตํด ์ค์ ๊ฐ๋ฅ

โจ์ปค์คํ
์ด๋ฒคํธ
- ์ฌ๋ฌ ํ์ผ๊ฐ์ ๋์ ๊ณต์ ๊ฐ๋ฅ
// ์ปค์คํ
์ด๋ฒคํธ ์ ์ธ
const EventEmitter = require('events');
const myEvent = new EventEmitter();
// ์ด๋ฒคํธ ๋ฑ๋ก
myEvent.addListener('event1', () => {
console.log('์ด๋ฒคํธ 1');
});
// ์ด๋ฒคํธ 2๋ ์ฝ๋ฐฑ์ด 2๊ฐ
myEvent.on('event2', () => {
console.log('์ด๋ฒคํธ 2');
});
myEvent.on('event2', () => {
console.log('์ด๋ฒคํธ 2 ์ถ๊ฐ');
});
// ํ๋ฒ๋ง ์คํ๋๊ณ ๋ค์์๋ ์๋ถ๋ฆผ
myEvent.once('event3', () => {
console.log('์ด๋ฒคํธ 3');
});
// ์ด๋ฒคํธ ํธ์ถ // ์ถ๋ ฅ
myEvent.emit('event1'); // ์ด๋ฒคํธ 1
myEvent.emit('event2'); // ์ด๋ฒคํธ 2
// ์ด๋ฒคํธ 2 ์ถ๊ฐ
myEvent.emit('event3'); // ์ด๋ฒคํธ 3
myEvent.emit('event3'); // --> once์ด๊ธฐ ๋๋ฌธ์ ํ๋ฒ๋ง ์ถ๋ ฅ๋จ
myEvent.on('event4', () => {
console.log('์ด๋ฒคํธ 4');
});
// ์ด๋ฒคํธ ์ง์ฐ๊ธฐ
// event4์ ์ฐ๊ฒฐ๋์ด์๋ ๋ชจ๋ ์ฝ๋ฐฑ ์ญ์ ๋จ
myEvent.removeAllListeners('์ด๋ฒคํธ 4');
myEvent.emit('event4') // --> ์คํ ์๋จ
// ํ๋์ ์ฝ๋ฐฑํจ์ ์ง์ฐ๊ธฐ
const listener = () => {
console.log('์ด๋ฒคํธ 5');
});
myEvent.on('event5', listener);
myEvent.removeListener('event5', listener);
myEvent.emit('event5'); // --> ์คํ ์๋จ
// ํด๋นํ๋ ์ด๋ฒคํธ์ ๋ฑ๋ก๋์ด์๋ ์ฝ๋ฐฑ ๊ฐ์ ์ถ๋ ฅ
console.log(myEvent.listenerCount('event2')); // 2
๐์๋ฌ ์ฒ๋ฆฌํ๊ธฐ
โจ์์ธ(Exception)
- ์ฒ๋ฆฌํ์ง ๋ชปํ ์๋ฌ
- ๋
ธ๋ ์ค๋ ๋๋ฅผ ๋ฉ์ถค
- ๋
ธ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฑ๊ธ ์ค๋ ๋๋ผ ์ค๋ ๋๊ฐ ๋ฉ์ถ๋ค๋ ๊ฒ์ ํ๋ก์ธ์ค๊ฐ ๋ฉ์ถ๋ ๊ฒ
- ์๋ฌ ์ฒ๋ฆฌ๋ ํ์
- ๊ธฐ๋ณธ์ ์ผ๋ก try catch ๋ฌธ์ผ๋ก ์์ธ ์ฒ๋ฆฌ


- ๋
ธ๋ ๋น๋๊ธฐ ๋ฉ์๋์ ์๋ฌ๋ ๋ฐ๋ก ์ฒ๋ฆฌํ์ง ์์๋ ๋จ
-> ์ฝ๋ฐฑ ํจ์์์ ์๋ฌ ๊ฐ์ฒด ์ ๊ณต / ๋
ธ๋ ํ๋ก์ธ์ค๊ฐ ๋ฉ์ถ์ง๋ ์์


- ํ๋ก๋ฏธ์ค์ ์๋ฌ๋ ๋ฐ๋ก ์ฒ๋ฆฌํ์ง ์์๋ ๋จ
-> ๋ฒ์ ์ด ์ฌ๋ผ๊ฐ๋ฉด ๋์์ด ๋ฐ๋ ์ ์์ (catch ๋ถ์ฌ์ค์ผ ํจ)

- ์ตํ์ ์๋จ์ผ๋ก ์ฌ์ฉ
-> ์ฝ๋ฐฑ ํจ์์ ๋์ ๋ณด์ฅ๋์ง ์์
-> ๋ณต๊ตฌ ์์
์ฉ์ผ๋ก ์ฐ๋ ๊ฒ์ ๋ถ์ ํฉ
-> ์๋ฌ ๋ด์ฉ ๊ธฐ๋ก ์ฉ์ผ๋ก๋ง ์ฐ๋ ๊ฒ ์ข์
