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

标签 javascript jquery

假设我有 2 个变量:

var connection1, connection2;
connection1 = connection2 = false;

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

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

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

如何创建一个仅在两个值都设置为 true 时才会触发的事件监听器 而无需 使用 setInterval

最佳答案

有 promise 可以挽救局面。

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

关于javascript - 同步变量/为变量更改值创建事件监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46150019/

相关文章:

javascript - 如何修复应使用 CSS 突出显示选定区域的代码

javascript - 使用 jquery 启用和禁用单击按钮上的输入字段(laravel5.3)

javascript - 为什么我的 ajax 元素立即失去焦点?

javascript - 如何使用 Java 中的等效代码在 NodeJs 中将 MD5 与 BigInt MD5 哈希转换为字符串格式

javascript - 如何将数据放入下拉框中并能够通过键入进行搜索?

javascript - 同时滚动屏幕上嵌入的两个 PDF,但通过触摸分别滚动

javascript - 在这行 javascript 中波浪号在做什么?

javascript - 使用angular js的多选下拉复选框

javascript - 为什么在语法更简洁的情况下使用 javascript 回调?

javascript - 使用哪个 jquery 事件?