簡體   English   中英

Node.js事件應用程序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM