nodejs筆記(1)--事件模型

events是node.js 最重要的模塊,events模塊只提供了一個對象events.EventEmitter,EventEmitter 的核心是事件發射與事件監聽器。

Node.js中大部分的模塊,都繼承自Event模塊。
與DOM樹上事件不同,不存在事件冒泡、逐層捕獲等行爲。

EventEmitter 支持若干個事件監聽器。當事件發射時,註冊到這個事件的事件監聽器被依次調用,事件參數作爲回調函數參數傳遞。

const events = require("events");

var ee = new events.EventEmitter();


var listener = function(arg){
    console.log("觸發first事件"+arg);
}

var listener2 = function(arg){
    console.log("觸發next事件"+arg);
}
ee.on("first",listener)

ee.on("next",listener2)

// emitter.once註冊監聽是一次性監聽,當觸發一次後,會移除該監聽
ee.once("once",function(arg){
    console.log("觸發once事件"+arg);
})
/*emitter.removeListener的第二個參數是要移除的監聽,而非移除成功後的回調函數*/

ee.removeListener("first",listener);
ee.emit("first","aa")

/*EventEmitter.removeAllListeners([event])   移除(批定事件)所有監聽器*/
ee.removeAllListeners("next");


/*
    EventEmitter.emit(event, [arg1], [arg2], [...])   觸發指定事件
    參數1:event  字符串,事件名
    參數2:可選參數,按順序傳入回調函數的參數
    返回值:該事件是否有監聽
*/
var isSuccess = ee.emit("first","1次");
var isSuccess2 = ee.emit("next","2次");
var isSuccess3 = ee.emit("once","3次");
var isSuccess4 = ee.emit("once","4次");
console.log("isSuccess:"+isSuccess+",isSuccess2:"+isSuccess2+",isSuccess3:"+isSuccess3+",isSuccess4:"+isSuccess4);
發佈了67 篇原創文章 · 獲贊 63 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章