從零開始學習Node.js例子六 EventEmitter發送和接收事件


pulser.js

/*
 EventEmitter發送和接收事件
 HTTPServer和HTTPClient類,它們都繼承自EventEmitter

 EventEmitter被定義在Node的事件(events)模塊中,直接使用EventEmitter類需要先聲明require('events'),
 否則不必顯式聲明require('events'),因為Node中很多對象都無需你調用require('events')就會使用EventEmitter
 */
var events = require('events');
var util = require('util');

function Pulser(){
    events.EventEmitter.call(this);
}
util.inherits(Pulser, events.EventEmitter);

Pulser.prototype.start = function(){
    var self = this;
    this.id = setInterval(function(){
        util.log('>>>>pulse');
        self.emit('pulse');
        util.log('<<<<pulse');
    }, 1000);
}
//定義了一個類Pulser,該類(通過util.inherits)繼承自EventEmitter,它的作用是每隔一秒鍾向所有監聽器發送一個定時事件。
//start方法使用了setInterval這個函數來定期重復執行回調函數,並調用emit方法將pulse事件發送給每一個監聽器


//使用Pulser對象
/*
創建了一個Pulser對象並處理其pulse事件,執行pulser.on('pulse'..)為pulse事件和回調函數建立聯系
 */
var pulser = new Pulser();
pulser.on('pulse', function(){
    util.log('pulse received');
});
pulser.start();


//對象使用emit函數發送事件,所有注冊到對應事件的監聽器都可以收到事件;
//通過調用.on方法注冊監聽器,參數是事件名,並用一個回調函數接收事件
//通常來說,有一些數據需要伴隨着事件同時發送  self.emit('eventName', data1, data2, ..);
//emitter.on('eventName', function(data1, data2,..){
       //接收到事件后的操作
// });

  每秒輸出一次


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM