eventemitter在同乙個函式註冊到同乙個event name時會導致重複觸發
例如下面的**
var events = require('events');
let ev1 = "ev-1";
let onev1 = (a, b)=>
var emitter = new events.eventemitter();
console.log("event on: ev-1, onev1");
emitter.on(ev1, onev1);
console.log("event on: ev-1, onev1");
emitter.on(ev1, onev1);
console.log("event send: ev-1 123, abc");
emitter.emit(ev1, 123, "abc");
輸出結果如下:
event on: ev-1, onev1
event on: ev-1, onev1
event send: ev-1 123, abc
event coming: ev-1 123 abc
event coming: ev-1 123 abc
要麼自己避免重複的註冊, 要麼可以考慮使用zevent
zevent的實現和簡單, 因此也很穩定, 效能高.
**位置: [email protected]:gzx-miller/zevent.git
首先,
npm install zevent
然後如下呼叫
let = require('zevent');
let ev1 = "ev-1";
let onev1 = (a, b)=>
let event = new zevent();
console.log("event on: ev-1, onev1");
event.on(ev1, onev1);
console.log("event on: ev-1, onev1");
event.on(ev1, onev1);
console.log("event send: ev-1 123, abc");
event.send(ev1, 123, "abc");
settimeout(() => , 200);
結果如下:
event on: ev-1, onev1
event on: ev-1, onev1
event send: ev-1 123, abc
event coming: ev-1 123 abc
event off: ev-1, onev1
event send: ev-1 456, def
關於EventEmitter的用法
1 var eventemitter require events eventemitter 2 var ee new eventemitter 3 ee.on someevent function 6 7 ee.emit someevent emit方法可以觸發多個同樣的事件,比如我們的頁面中繫結...
node核心EventEmitter的應用總結
eventemitter是node中應用非常廣泛,不管是框架,還是腳手架,還是外掛程式都可以看到eventemitter的身影。比如我們去檢視vue,react,webpack,egg,koa等框架或者外掛程式的原始碼,都可以看到內部使用到了eventemitter。那麼到底什麼是eventemit...
EventEmitter的前端JS實現
on event,listener 為指定事件註冊乙個 接受乙個字串 event 和乙個 函式。emit event,arg1 arg2 按 的順序執行執行每個 addlistener event,listener on的同名函式 alias once event,listener 和on類似,但只...