Nodejs.订阅 EventEmitter.emits 并仅在特定条件下执行

Nodejs. Subscribe to EventEmitter.emits and only execute on certain conditions

本文关键字:条件下 执行 订阅 EventEmitter emits Nodejs      更新时间:2023-09-26

我正在尝试实现如下内容:(请参阅标题为"命令行界面应该是双极的"一节。

http://michaelbrooks.ca/deck/jsconf2013/#/74

基本上我想要看起来像这样的东西:

var argv = require('optimist')
        .argv;
var em = require('events').EventEmitter;
var EventEmitter = new em();
var bell = function ringBell() {
console.log('ring');
}
EventEmitter.emit('doorOpen');
if (argv.t) {
    EventEmitter.on('doorOpen', bell);
}

我实际使用它的方式有点复杂,但我想立即发出某些东西,然后有可能稍后订阅它们,如果某些事情为真(在这种情况下是 -t 标志被给出),则输出显示给他们,如果不是,什么都不会发生。

有什么想法吗?

谢谢。

您必须在发出事件之前订阅。在发出"doorOpen"事件之前放置"if(argv.t)"块。即使你的应用非常复杂,也需要在发出事件处理程序之前附加它。

例如:

if (argv.t) {
    em.on('doorOpen', bell);
}
em.emit('doorOpen');