프론트엔드 개발/Node.js

Node.js 이벤트, eventEmitter

하이고니 2023. 2. 6. 15:39

event

- 특정 동작이 실행될 때 분기 처리 가능

- 스트림 ('data')('end')

- 이벤트가 발생하면 콜백 함수 실행

 

event in Node.js

- new EventEmitter()

- on VS emit

- event 삭제: removeAllListeners / removeListener

 

Call event in Node.js

- on (이벤트 이름, 콜백): 이벤트 발생 시 콜백 함수 실행. 이벤트 리스닝

- addListener (이벤트 이름, 콜백)

 

Create event in Node.js

- emit (이벤트 이름): 이벤트를 호출하는 함수

- once (이벤트 이름, 콜백): 이벤트를 한 번만 실행한다.

 

Remove event in Node.js

- removeAllListeners: 이벤트에 연결된 모든 이벤트 리스너를 제거한다.

- removeListener (이벤트 이름, 리스너): 이벤트에 연결된 리스너를 제거한다.

- off (이벤트 이름, 콜백): 이벤트 리스너를 제거한다. / Node v10에서 추가되었다.

- listenerCount (이벤트 이름): 현재 이벤트에 몇 개의 이벤트 리스너가 연결되었는지 확인할 수 있다.

 

 

이벤트 생성 및 호출

 

const EventEmitter = require('events');

const customEvent = new EventEmitter();

// addListener
customEvent.addListener('event1', () => {
	console.log('첫 번째 이벤트가 발생했습니다.'); (1)
})

// on
customEvent.on('event2', () => {
	console.log('두 번째 이벤트가 발생했습니다.'); (2)
})

// once
customEvent.once('event3', () => {
	console.log('세 번째 이벤트가 발생했습니다.'); (3)
})

customEvent.emit('event1');	// (1) 첫 번째 이벤트가 발생했습니다.
customEvent.emit('event2');	// (2) 두 번째 이벤트가 발생했습니다.

customEvent.emit('event3');	// (3) 세 번째 이벤트가 발생했습니다. => 한 번만 출력
customEvent.emit('event3');	// 
customEvent.emit('event3');	//

 

이벤트 제거

 

// removeAllListeners
customEvent.removeAllListeners('event1'); // 이벤트 실행 안 됨

const cb = () => {
	console.log('첫 번째 이벤트가 발생했습니다.')
}

customEvent.addListener('event1', cb);
customEvent.emit('event1'); // 실행됨

// off / removeListener

customEvent.off('event1', cb);	// 이벤트를 지우는 게 아니라 콜백 함수를 지움
customEvent.emit('event1'); // 실행 안 됨

 

이벤트리스너 카운트

 

const EventEmitter = require('events');

const customEvent = new EventEmitter();

const cb = () => {
	console.log('첫 번째 이벤트가 발생했습니다.');
}

const cb1 = () => {
	console.log('첫 번째 이벤트가 발생했습니다222');
}

custonEvent.addListener('event1', cb);
custonEvent.addListener('event1', cb1);


// listenerCount
const count = customEvent.listenerCount('event1');
console.log(count);	// 2

'프론트엔드 개발 > Node.js' 카테고리의 다른 글

Web Server 기초. GET, POST, PUT, DELETE (Express 활용)  (0) 2023.02.07
Stream, Pipe  (0) 2023.02.06
Buffer  (0) 2023.02.06