본문 바로가기

개발

[Node.js] Event Emitter

MEAN STACK node.js

테스트 환경 : Windows 10 64-bit



node.js는 EventEmitter 객체를 상속 받아서 이벤트를 발생시키고 처리할 수 있다. 


event emitter methods 

 event

 이벤트명

 listener

 이벤트 핸들러 함수명

 addListener(‘event’,’listener’)

 'event'와 'listener'를 바인딩한다.   

 'event(name)'으로 지정한 함수를 호출한다. 

 on(‘event’,’listener’) 

 'event'와 'listener'를 바인딩한다.   

 'event(name)'으로 지정한 함수를 호출한다. 

 once(‘event’,’listener’)

 'event'와 'listener'를 바인딩한다. 

 'event(name)'으로 지정한 함수를 호출한다. 

 addListener, on과 다른 점은 한번만 호출한것이다.

 removeListener(‘event’,’listener’)

 'event'와 'listener'의 바인딩을 제거한다.

 removeAllListener([‘event’])

 event 배열내에 들어가 있는 모든 함수에 대한 바인딩을 제거한다.

 setMaxListeners(n) 

 eventEmitter에 바인딩될 수 있는 이벤트의 수를 n으로 변경한다.

 listeners(event) 

 'event'명으로 바인딩된 모든 callback 함수명을 리턴한다.

 emit(‘event’,[args], [arg1], [...]) 

 'event'명으로 이벤트를 생성하고, 

 [args], [arg1], [...]에 정의된 값 들을 이벤트와 함께 전달한다.




새로운 js 파일 생성후 아래 코드를 입력한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
var events = require('events');
var eventEmitter = new events.EventEmitter();
 
// listener #1
var listner1 = function listner1() {
   console.log('listner1 executed.');
}
 
// listener #2
var listner2 = function listner2() {
  console.log('listner2 executed.');
}
 
// listener #3
var listner3 = function listner3() {
  console.log('listner3 executed.');
}
 
// listner1 함수와 'connection' event 바인드
eventEmitter.addListener('connection', listner1);
 
// listner2 함수와 'connection' event 바인드
eventEmitter.on('connection', listner2);
 
// listner3 함수와 'connection' event 바인드
eventEmitter.on('connection', listner3);
 
// 'connection' 이벤트명으로 바인딩된 listener 수
var eventListeners = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
console.log(eventListeners + " Listner(s) listening to connection event");
 
// connection event 발생
eventEmitter.emit('connection');
 
// Remove the binding of listner1 function
// listner1, listner3 함수 바인딩 제거
eventEmitter.removeListener('connection', listner1);
eventEmitter.removeListener('connection', listner3);
console.log("Listner1,Listner2 will not listen now.");
 
// Fire the connection event 
eventEmitter.emit('connection');
 
// 바인딩 제거후 listener 수 확인
eventListeners = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
console.log(eventListeners + " Listner(s) listening to connection event");
 
console.log("Program Ended.");
cs



노드 실행

node eventEmitter.js



결과 출력

3 Listner(s) listening to connection event

listner1 executed.

listner2 executed.

listner3 executed.

Listner1,Listner2 will not listen now.

listner2 executed.

1 Listner(s) listening to connection event

Program Ended.




참조 : http://www.tutorialspoint.com/nodejs/nodejs_event_emitter.htm

'개발' 카테고리의 다른 글

[Linux] 기본 명령어 모음  (0) 2015.12.14
[Linux] 사용자 & 그룹 명령어 모음  (0) 2015.12.14
[Node.js] event loop  (0) 2015.12.14
[Node.js] callback 함수 사용하기  (0) 2015.12.11
[Node.js] NPM - Node Package Manager  (0) 2015.12.09

맨 위로