0

我想實現類似如下:(見標題爲「A命令行界面應該是兩極。」Nodejs。訂閱EventEmitter.emits,只有在一定的條件下執行

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標誌被給出),如果不是,則沒有任何反應。

有什麼想法?

謝謝。

+1

你要訂閱事件之前被髮射。在發出「doorOpen」事件之前放置「if(argv.t)」塊。即使您的應用程序超級複雜,您也需要在發佈之前附加事件處理程序。 –

+0

啊,當然!非常感謝。如果你提交這個答案,我會接受它。 – Jonovono

回答

1

您必須在發佈事件之前訂閱。在發出「doorOpen」事件之前放置「if(argv.t)」塊。即使您的應用程序超級複雜,您也需要在發佈之前附加事件處理程序。

例如:

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

em.emit('doorOpen');