티스토리 뷰

Back-end/Node.js

The Event Module

vinomuse 2017. 2. 23. 03:20


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 메서드를 사용해서 응용

https://nodejs.org/dist/latest-v7.x/docs/api/util.html#util_util_inherits_constructor_superconstructor

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
공유하기 링크
댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
«   2024/04   »
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
Total
Today
Yesterday