Javascript 同步变量/为变量更改值创建事件侦听器?

Javascript 同步变量/为变量更改值创建事件侦听器?,javascript,jquery,Javascript,Jquery,假设我有两个变量: var connection1, connection2; connection1 = connection2 = false; 我有两个不同的函数连接到远程节点,并在连接时将每个变量更改为true: node1.on('open', function () { connection1 = true; }); node2.on('open', function () { connection2 = true; }); 我希望一个函数只在两个连接完成后运

假设我有两个变量:

var connection1, connection2;
connection1 = connection2 = false;
我有两个不同的函数连接到远程节点,并在连接时将每个变量更改为
true

node1.on('open', function () {
    connection1 = true; 
});
node2.on('open', function () {
    connection2 = true; 
});
我希望一个函数只在两个连接完成后运行,而不检查每个
on
函数中的另一个变量


如何创建一个事件侦听器,该侦听器仅在两个值都设置为
true
时才会触发,而不使用
setInterval

承诺就是为了节省时间

// Promise.all will fulfill when all promises are resolved or one is rejected
Promise.all(
    [
        new Promise(
            function(resolve, reject)
            {
                node1.on("open", resolve);
            }
        ),
        new Promise(
            function(resolve, reject)
            {
                node2.on("open", resolve);
            }
        )
    ]
)
.then(
    function()
    {
        console.log("Connections 1 & 2 opened");
    }
)
.catch(
    function(error)
    {
        console.log("Error:", error);
    }
);

既然每次连接时都有回调函数,你就不能在那里询问另一个是否也连接了,然后运行代码吗?@traderIWD不,我对代码做了很多简化,但它非常复杂,我无法在每个
函数中执行。我需要一些外部的东西。你考虑过js的承诺吗?我创建了simple来展示如何实现它。@谢谢你的示例,但这就是我自己实现它的方式。正如你在问题中所看到的,我不想使用setTimout,因为它会导致我的应用程序出现问题。