javascript - 有没有办法为一组事件发生时设置处理函数?

标签 javascript ajax events prototypejs

例如,我有两个并发的 AJAX 请求,我需要两个请求的结果来计算第三个结果。我正在使用 Prototype 库,所以它可能看起来像这样:

var r1 = new Ajax.Request(url1, ...);
var r2 = new Ajax.Request(url2, ...);

function on_both_requests_complete(resp1, resp2) {
   ...
}

一种方法是使用轮询,但我认为一定有更好的方法。

更新:可接受的解决方案必须没有竞争条件。

最佳答案

在每个请求的回调函数上,设置一个boolean如

request1Completerequest2Complete

并调用 on_both_requests_complete(resp1,resp2)

在处理程序函数中,检查是否设置了两个 bool 值。如果不是,就返回并退出函数。回调函数应该被序列化,因为它们不能同时发生,所以这应该有效。如果它们可以并行发生,您就会打破竞争条件。

关于javascript - 有没有办法为一组事件发生时设置处理函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2450179/

相关文章:

javascript - Rxjs 在顺序执行操作时出现 concat 运算符问题

javascript - 如何在asp.net MVC中获取外部JavaScript文件中的 session 值、临时数据?

php - 使用 php ajax jquery 在表中显示输入框的结果

jquery - 如何使用 jquery ajax 提交表单使用 Mechanize 登录? (Python)

c++ - 在 QGraphicsItem 上安装 SceneEventFilter

javascript - PostgreSQL 通过调用 CURRENT_DATE 获取昨天

来自工厂设计的 JavaScript 模块而不是类

ruby-on-rails - rails 4 : manipulate link_to remote POST query string parameters

c# - new 运算符如何与 C# 中的委托(delegate)一起使用

c# - 了解 C# 事件对发送者对象的使用