nodejs事件編程詳解
nodejs事件的例子,先說下事件
Node里面的許多對象都會分發事件:一個net.Server對象會在每次有新連接時分發一個事件, 一個fs.readStream對象會在文件被打開的時候發出一個事件。 所有這些產生事件的對象都是 events.EventEmitter 的實例。 你可以通過require("events");來訪問該模塊
//引入events模塊
var events = require("events");
//實例化events.EventEmitter對象
var event = new events.EventEmitter();
//添加自定義事件
event.on("myevent",function(){
console.log("我定義的事件");
})
//使用事件
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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!