异步等待满足条件

Mar*_*rio 2 asynchronous node.js

在我的代码中,我有三个变量,其值取决于外部函数调用,它们可以在任何时刻以任何顺序设置为true,因此,它们更像是标志.

只需将这三个变量设置为true,我就需要一个函数.

如何在不阻塞我的服务器的情况下以异步方式执行等待这三个变量的情况?

(我不想被引用到外部库)

Jul*_*gan 8

我通常喜欢使用异步库来做这样的事情,但是因为你不想为此引用外部库.我将编写一个简单的函数,以一定间隔检查它以查看变量是否已设置.


区间检查方法

var _flagCheck = setInterval(function() {
    if (flag1 === true && flag2 === true && flag3 === true) {
        clearInterval(_flagCheck);
        theCallback(); // the function to run once all flags are true
    }
}, 100); // interval set at 100 milliseconds
Run Code Online (Sandbox Code Playgroud)

异步库并行方法

var async = require('async');

async.parallel([
    function(callback) {
        // handle flag 1 processing
        callback(null);
    },

    function(callback) {
        // handle flag 2 processing
        callback(null);
    },

    function(callback) {
        // handle flag 3 processing
        callback(null);
    },
], function(err) {
    // all tasks have completed, run any post-processing.
});
Run Code Online (Sandbox Code Playgroud)