티스토리 뷰
Event Emitter
node.js 에서 이벤트를 발생시키고 처리하는 방식인 EventEmitter객체를 상속받아 구현
우선 node.js api 문서를 보고 따라해본다.
https://nodejs.org/dist/latest-v7.x/docs/api/events.html#events_events
var events = require('events');
var myEmitter = new events.EventEmitter();
// listener 등록
myEmitter.on('customEvent', function(msg) {
console.log(msg);
});
// event 호출
myEmitter.emit('customEvent', 'Hello EventEmitter');
// 결과값 : Hello EventEmitter
변수 myEmitter에 EventEmitter 객체 저장하고 on() 메서드를 사용해서 listener을 'customEvent'라는 이름으로 등록한다.
마지막으로 emit() 메서드를 사용해서 'customEvent'를 발생시킨다.
이번에는 util 모듈의 inherits 메서드를 사용해서 응용
var events = require('events');
var utils = require('util');
function Player(firstName) {
this.firstName = firstName;
};
utils.inherits(Player, events.EventEmitter);
var bryant = new Player('Kobe');
var mcgrady = new Player('Tracy');
var iverson = new Player('Allen');
var allPlayers = [bryant, mcgrady, iverson];
allPlayers.forEach(function(player) {
// register event 'myName'
player.on('myName', function(lastName) {
console.log("I'm " + this.firstName + ' ' + lastName);
});
});
// trigger the event 'myName'
bryant.emit('myName', 'Bryant');
mcgrady.emit('myName', 'Mcgrady');
iverson.emit('myName', 'Iverson');
/* 결과값
I'm Kobe Bryant
I'm Tracy Mcgrady
I'm Allen Iverson
*/
Player 라는 함수를 선언하고 util 모듈의 inherits 메서드 사용하여 Player 객체를 event.EventEmitter으로부터 상속받도록 한다.
각각의 인스턴스를 생성하고 allPlayers 라는 변수에 배열로 저장한다.
javascript forEach() 메서드를 사용하여 각각의 인스턴스를 반복하고 'myName'이라는 이벤트를 등록한다.
'Back-end > Node.js' 카테고리의 다른 글
Modules & require() (0) | 2017.02.23 |
---|---|
Node.js 소개 및 설치 (0) | 2017.02.22 |
댓글