例如,我有两个并发的AJAX请求,我需要这两个请求的结果来计算第三个结果。我使用的是Prototype库,所以它可能看起来像这样:
var r1 = new Ajax.Request(url1, ...);
var r2 = new Ajax.Request(url2, ...);
function on_both_requests_complete(resp1, resp2) {
...
}一种方法是使用轮询,但我认为肯定有更好的方法。
更新:可接受的解决方案必须没有竞争条件。
发布于 2010-03-16 04:25:02
在每个请求的回调函数上,设置一个布尔值,例如
request1Complete和request2Complete
然后打电话给on_both_requests_complete(resp1,resp2)。
在处理函数中,检查是否设置了两个布尔值。如果不是,就返回并退出函数。回调函数应该是序列化的,因为它们不能同时发生,所以这应该是可行的。如果它们可以并行发生,您将在竞争条件下中断。
https://stackoverflow.com/questions/2450179
复制相似问题