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

时间:2017-09-11 07:10:53

标签: javascript jquery

假设我有两个变量:

var connection1, connection2;
connection1 = connection2 = false;

我有2个不同的功能连接到远程节点,并在连接时将每个变量更改为true

node1.on('open', function () {
    connection1 = true; 
});
node2.on('open', function () {
    connection2 = true; 
});

我希望函数只在两个连接完成后运行,而不检查每个on函数中的其他变量。

如何创建一个事件监听器,只有当两个值都设置为true 且不使用} 时才会触发?

1 个答案:

答案 0 :(得分:1)

承诺是为了挽救这一天。

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