Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript:排序AJAX调用_Javascript_Jquery_Ajax - Fatal编程技术网

JavaScript:排序AJAX调用

JavaScript:排序AJAX调用,javascript,jquery,ajax,Javascript,Jquery,Ajax,对于特定的功能,我有3个ajax调用。第三次呼叫取决于前两次呼叫,即第三次呼叫必须完成前两次呼叫。但前两个AJAX调用是独立的。所以我希望它们是异步的,并并行执行 现在如何构造这些调用?我试着把它们放在各自调用的嵌套成功块中,但在这种情况下,前两个调用也不是独立的 如果可能,请提供一些sudo代码 使用和: 其中ajaxCallX类似于 function ajaxCall1() { return $.ajax(...); } 这基本上意味着“在解决了ajaxCall1的承诺和ajaxC

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

现在如何构造这些调用?我试着把它们放在各自调用的嵌套成功块中,但在这种情况下,前两个调用也不是独立的

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

使用和:

其中
ajaxCallX
类似于

function ajaxCall1() {
    return $.ajax(...);
}
这基本上意味着“在解决了
ajaxCall1
的承诺和
ajaxCall2
的承诺后,执行函数
ajaxCall3

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


每个Ajax调用的响应都作为参数传递给
然后
回调。你可以通过他们作为

$.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]);
});

查看
$。当
文档中有另一个示例时。

在前两个事件完成执行后,可以使用ajaxComplete调用第三个事件。ajaxComplete是一个回调事件,在每次ajaxCalls得到响应后触发。查看此链接以了解其工作原理

OP可能需要前两个ajax调用的结果才能反馈到第三个ajax调用,因此您可以解释在使用此结构时如何实现。与此问题/答案类似:阅读一篇关于并行和串行ajax调用的非常好的文章我不认为这是正确的这里有用
ajaxComplete
为每个完成的Ajax调用触发。因此,如果您进行两次Ajax调用,事件将触发两次。@FelixKling您可以查看ajaxComplete完成了哪个Ajax调用。所以你肯定可以使用它,它可以工作。为什么要使用ajaxComplete,而不是对你想要监视的实际ajax函数使用成功处理程序(或者对实际ajax函数使用承诺)?@jfriend00我只是说还有其他一些选项可以做到这一点。
$.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]);
});