例如,我有两个并发的 AJAX 请求,我需要两个请求的结果来计算第三个结果。我正在使用 Prototype 库,所以它可能看起来像这样:
var r1 = new Ajax.Request(url1, ...);
var r2 = new Ajax.Request(url2, ...);
function on_both_requests_complete(resp1, resp2) {
...
}
一种方法是使用轮询,但我认为一定有更好的方法。
更新:可接受的解决方案必须没有竞争条件。
最佳答案
在每个请求的回调函数上,设置一个boolean如
request1Complete
和 request2Complete
并调用 on_both_requests_complete(resp1,resp2)
。
在处理程序函数中,检查是否设置了两个 bool 值。如果不是,就返回并退出函数。回调函数应该被序列化,因为它们不能同时发生,所以这应该有效。如果它们可以并行发生,您就会打破竞争条件。
关于javascript - 有没有办法为一组事件发生时设置处理函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2450179/