JavaScript:订购AJAX调用

时间:2014-02-16 04:53:45

标签: javascript jquery ajax

我有3个ajax调用特定功能。第3个呼叫取决于前2个呼叫,即对于第3个呼叫,必须完成前2个呼叫。但前两个AJAX调用是独立的。所以我希望它们是异步并且并行执行。

现在如何构建这些调用?我试图把它们放在相应调用的嵌套成功块中,但那个案例前2个调用也不是独立的。

如果可能的话,请建议使用一些sudo代码。

2 个答案:

答案 0 :(得分:15)

使用promises$.when

$.when(ajaxCall1(), ajaxCall2()).then(ajaxCall3);

其中ajaxCallX类似于

function ajaxCall1() {
    return $.ajax(...);
}

这基本上意味着“在两者之后,ajaxCall1的承诺和ajaxCall2的承诺得到解决,执行函数ajaxCall3”。

这是有效的,因为$.ajax(和类似方法)返回的对象实现了promise接口。更多信息也可以在$.ajax documentation

中找到

每个Ajax调用的响应都作为参数传递给then回调。你可以把它们作为

$.when(ajaxCall1(), ajaxCall2()).then(function(a1, a2) {
    // a1[0] is the response of the first call
    // a2[0] is the response of the second call
    ajaxCall3(a1[0], a2[0]);
});

请查看$.when文档以获取另一个示例。

答案 1 :(得分:1)

在前两个事件完成执行后,您可以使用ajaxComplete来调用第三个事件。 ajaxComplete是一个回调事件,在每个ajaxCalls得到响应后触发。查看此链接以查找其工作原理https://api.jquery.com/ajaxComplete/