nodejs事件編程詳解

jopen 10年前發布 | 59K 次閱讀 Node.js 開發 NodeJS

nodejs事件的例子,先說下事件

Node里面的許多對象都會分發事件:一個net.Server對象會在每次有新連接時分發一個事件, 一個fs.readStream對象會在文件被打開的時候發出一個事件。 所有這些產生事件的對象都是 events.EventEmitter 的實例。 你可以通過require("events");來訪問該模塊



可以看出我們的事件是定義在events.EventEmitter 的實例,所以我們先實例化這個類
//引入events模塊
var events = require("events");
//實例化events.EventEmitter對象
var event = new events.EventEmitter();



有了事件對象后我們就可以添加自定義的事件了
//添加自定義事件
event.on("myevent",function(){
    console.log("我定義的事件");
})



我們定義了一個myevent事件,下面我們使用它
//使用事件
event.emit("myevent");


下面一些事件方法

刪除一個事件
event.removeListener("myevent",function(){
    console.log("現在刪除這個once_event事件");
});
//刪除所有事件,或者刪除某些事件
event.removeAllListeners("myevent");
//添加一個一次性事件,事件被觸發后就被刪除
event.once("once_event",function(){
    console.log("這是個一次性事件,事件被觸發后就被刪除"); 
});
//觸發一次性事件
event.emit("once_event");
//返回指定事件的listener數組
console.log(event.listeners('myevent'));


下面給我們的對象添加事件

var util = require("util");
var events = require("events");

//讓MyEvent繼承event.EventEmitter,使用的是util.inherits這個工具來繼承
function MyEvent() {
    events.EventEmitter.call(this);
}
util.inherits(MyEvent, events.EventEmitter);

//MyEvent類的write方法觸發了data這個事件
MyEvent.prototype.write = function(data) {
    this.emit("data", data);//觸發DATA事件
    return this;//返回對象,方便鏈式調用
}

//實例化MyEvent對象,
var myevent = new MyEvent();

//監聽myevent的data事件
myevent.on("data",function(data){
    console.log("事件的回調:"+data);
});

//用write方法觸發data事件
myevent.write("一個操作后,觸發了MyEvent對象的data事件");



 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!