javascript - 触发两个事件时运行代码

标签 javascript events language-agnostic

这主要是一个与语言无关的问题。

如果我正在等待两个事件完成(例如,两个 IO 事件或 http 请求),处理此问题的最佳模式是什么。我能想到的一件事是以下(伪 js 示例)。

request1.onComplete = function() {
  req1Completed = true;
  eventsCompleted();
}

request2.onComplete = function() {
  req2Completed = true;
  eventsCompleted();
}

eventsCompleted = function() {

  if (!req1Completed || !req2Completed) return;
  // do stuff

}

这是最有效的模式,还是有更优雅的方法来解决这个问题?

最佳答案

在进入细节之前,这里有一些巧妙的利用 lambda 函数的优势:

function makeCountdownCallback(count, callback) {
    return function() {
        if (--count == 0)
            callback();
    };
}

request1.onComplete = request2.onComplete = makeCountdownCallback(2, function() {
    // do stuff
});

这显然假设每个事件最多触发一次,并且没有利用顺序。

关于javascript - 触发两个事件时运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5305965/

相关文章:

javascript - Angular 2 访问 REST API 错误 - 没有 Http 提供程序

javascript - HTML 表格未在客户端呈现

language-agnostic - 最喜欢的(聪明的)防御性编程最佳实践

algorithm - 随机排序运行时间

javascript - Vue 中传递事件方法

java - (地理)位置的通用数据结构/格式是什么?您如何比较它们?

javascript - 沿着矩形边界的进度条

javascript - 检查按钮是否在时间内被点击

javascript - 在 JavaScript 中,是否可以在 IE 上注册一个事件监听器来捕获页面上的所有更改、焦点和模糊事件?

javascript - FabricJS - 避免在对象结束移动后触发 "canvas.on(' 鼠标 :up', function() { ... })"