0

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

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标志),如果没有,什么也不会发生。

有什么想法吗?

谢谢。

4

1 回答 1

1

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

例如:

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

em.emit('doorOpen');
于 2013-10-30T10:29:52.143 回答