小编典典

JavaScript:订购AJAX调用

ajax

我对特定功能有3个ajax调用。第三通话取决于前两个通话,即对于第三通话,必须完成前两个通话。但是前两个AJAX调用是独立的。因此,我希望它们异步并并行执行。

现在如何组织这些电话?我试图将它们放在各个调用的嵌套成功块中,但是前两个调用也不是独立的。

如果可能,请提出一些sudo代码。


阅读 178

收藏
2020-07-26

共1个答案

小编典典

使用诺言$.when

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

在哪里ajaxCallX

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

这基本上意味着“在解决了诺言ajaxCall1和诺言之后ajaxCall2,执行功能ajaxCall3”。

之所以可行,是因为$.ajax(和类似方法)返回的对象实现了promise接口。也可以在$.ajax文档中找到更多信息。


每个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文档中的另一个示例。

2020-07-26