[英]Node.js events applications
我在理解Node.js中事件的應用時遇到了一些麻煩。 考慮以下標准自定義EventEmitter實現:
var EventEmitter = require('events').EventEmitter;
var util = require('util');
function SimpleEE() {
var self = this;
self.val = false;
EventEmitter.call(this);
}
util.inherits(SimpleEE, EventEmitter);
SimpleEE.prototype.changeVal = function() {
self.val = !self.val;
self.emit('valChanged', self.val);
}
SimpleEE.on('valChanged', function(newVal) {
console.log('val was changed to ' + newVal);
});
在這種情況下,我看不到有監聽器的意義。 假設,您希望每次事件發生時都執行相同的操作,為什么不將偵聽器的回調函數代替emit()
調用呢?
之所以讓我感到困惑,是因為我最初認為事件是為了進行跨模塊通信而設計的。 也就是說,當另一個模塊中發生適當的操作時,將向一個模塊發出警報。 但是,據我了解,發射器和偵聽器必須在同一EventEmitter實例下注冊才能工作。
感謝您幫助我理解。
如果要使用交叉模塊,則應該導出您的類,並在外部創建它的實例。 例如
module.exports = SimpleEE
外
SimpleEE = require("yourModule")
var instance = new SimpleEE()
instance.on("valChanged",function(){})
instance.changeVal("22");
或創建singleTone,以便導出創建的實例
module.exports = new SimpleEE()
外部
SimpleEE = require("yourModule")
SimpleEE.on("valChanged",function(){})
SimpleEE.changeVal("22");
你可以在這里懶洋洋的如何在node.js中共享一個EventEmitter? 獲取有關觸發和監聽GLOBAL事件的信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.