如何在node.js中检查两个事件

时间:2014-11-21 21:36:49

标签: javascript node.js events

我希望关闭一个函数,但只有当两个或多个事件被触发时。是否有内置的方法来做到这一点?

这里有一个事件:

setup.on('api routes ready', function () {
  console.log('Yay!');
});

我该怎么做:

setup.on('api routes ready', 'website routes ready', function () {
  console.log('Yay!');
});

任何想法都会摇摆不定!

2 个答案:

答案 0 :(得分:3)

最好使用具有适当功能的async等库。

通过这种方式,您可以选择是并行还是串行执行功能,如果并行执行,则可以定义仅在所有功能完成后运行的回调。

虽然@ HeadCode的代码可以使用,但它不能很好地扩展并且很容易出错。

答案 1 :(得分:1)

这是(未经测试的)开始。

var waitForIt = (function(){
    var api_ready = false;
    var web_ready = false;
    return function(event){
        if (event === 'api routes ready'){
            api_ready = true;
        }
        if(event === 'web routes ready'){
            web_ready = true;
        }

        if(api_ready && web_ready){
            console.log('Yay!');
        }
    }
 })();

setup.on('api routes ready', function () {
    waitForIt('api routes ready');
});

setup.on('web routes ready', function () {
    waitForIt('web routes ready');
});