Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在node.js中检查两个事件_Javascript_Node.js_Events - Fatal编程技术网

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

Javascript 如何在node.js中检查两个事件,javascript,node.js,events,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!'); }); 任何想法都会很好 这是一个未经测试的开始

我希望启动一个函数,但只有在启动了两个或多个事件时。有没有一种内置的方法可以做到这一点

以下是一个事件:

setup.on('api routes ready', function () {
  console.log('Yay!');
});
我如何做到这一点:

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

任何想法都会很好

这是一个未经测试的开始

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

这是一个未经考验的开端

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

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

有了它,您可以选择是并行执行还是串行执行函数,如果是并行执行,则可以定义一个回调函数,该回调函数只能在所有函数完成后运行


虽然@HeadCode的代码可以工作,但它的伸缩性不好,很容易出错。

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

有了它,您可以选择是并行执行还是串行执行函数,如果是并行执行,则可以定义一个回调函数,该回调函数只能在所有函数完成后运行


虽然@HeadCode的代码可以工作,但它的伸缩性不好,很容易出错。

您可能需要创建一个标志来显示第一个事件何时触发,所以当第二个事件触发时,您可以识别这一点。您可能需要创建一个标志来显示第一个事件何时触发,所以当第二个事件触发时,您认识到这一点。问题,async中的类型是否被节点的eventEmitter类吸收了?好问题。但我不这么认为,他们似乎想保持节点本身相当轻。我想这真的是一个不同的用例。异步和类似的库只是方便地添加到节点的本机异步特性上。它们大大简化了您自己的代码。你可能可以用事件来做这件事,但我认为它会更复杂。我正在尝试自己做这件事,这很有趣,迫使你以一些非常奇怪和有趣的方式使用JavaScript。闭包、&&’等。问题,异步中的类型是否被节点的eventEmitter类吸收了?好问题。但我不这么认为,他们似乎想保持节点本身相当轻。我想这真的是一个不同的用例。异步和类似的库只是方便地添加到节点的本机异步特性上。它们大大简化了您自己的代码。你可能可以用事件来做这件事,但我认为它会更复杂。我正在尝试自己做这件事,这很有趣,迫使你以一些非常奇怪和有趣的方式使用JavaScript。闭包、和等等。