【问题标题】:Nodejs. Subscribe to EventEmitter.emits and only execute on certain conditions节点。订阅 EventEmitter.emis 并仅在特定条件下执行
【发布时间】:2013-11-09 01:21:30
【问题描述】:

我正在尝试实现以下内容:(请参阅标题为“命令行界面应该是双极的”部分。

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);
}

我实际上如何使用它有点复杂,但我想立即发出某些东西,然后有可能稍后订阅它们,如果某些事情是真的,则向他们显示输出(在这个给出 case -t 标志),如果没有,则没有任何反应。

有什么想法吗?

谢谢。

【问题讨论】:

  • 您必须在事件发出前订阅。在发出“doorOpen”事件之前放置“if(argv.t)”块。即使您的应用程序非常复杂,您也需要在事件处理程序发出之前附加它。
  • 啊,当然!非常感谢。如果您将其作为答案提交,我会接受。

标签: javascript node.js shell command-line command-line-interface


【解决方案1】:

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

例如:

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

em.emit('doorOpen');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-06
    • 1970-01-01
    • 1970-01-01
    • 2018-08-23
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 2022-10-19
    相关资源
    最近更新 更多