本文實(shí)例講述了Node.js EventEmitter發(fā)送和接收事件的方法。分享給大家供大家參考,具體如下:
pulser.js
/* EventEmitter發(fā)送和接收事件 HTTPServer和HTTPClient類,它們都繼承自EventEmitter EventEmitter被定義在Node的事件(events)模塊中,直接使用EventEmitter類需要先聲明require('events'), 否則不必顯式聲明require('events'),因?yàn)镹ode中很多對(duì)象都無需你調(diào)用require('events')就會(huì)使用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);}//定義了一個(gè)類Pulser,該類(通過util.inherits)繼承自EventEmitter,它的作用是每隔一秒鐘向所有監(jiān)聽器發(fā)送一個(gè)定時(shí)事件。//start方法使用了setInterval這個(gè)函數(shù)來定期重復(fù)執(zhí)行回調(diào)函數(shù),并調(diào)用emit方法將pulse事件發(fā)送給每一個(gè)監(jiān)聽器//使用Pulser對(duì)象/*創(chuàng)建了一個(gè)Pulser對(duì)象并處理其pulse事件,執(zhí)行pulser.on('pulse'..)為pulse事件和回調(diào)函數(shù)建立聯(lián)系 */var pulser = new Pulser();pulser.on('pulse', function(){ util.log('pulse received');});pulser.start();//對(duì)象使用emit函數(shù)發(fā)送事件,所有注冊(cè)到對(duì)應(yīng)事件的監(jiān)聽器都可以收到事件;//通過調(diào)用.on方法注冊(cè)監(jiān)聽器,參數(shù)是事件名,并用一個(gè)回調(diào)函數(shù)接收事件//通常來說,有一些數(shù)據(jù)需要伴隨著事件同時(shí)發(fā)送 self.emit('eventName', data1, data2, ..);//emitter.on('eventName', function(data1, data2,..){ //接收到事件后的操作// });
每秒輸出一次
希望本文所述對(duì)大家nodejs程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注