这主要是一个与语言无关的问题。
如果我正在等待两个事件完成(例如,两个 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/