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,..){ //接收到事件后的操作 // });
每秒輸出一次
