Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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,ajax请求将由用户单击启动 不可能知道将发送多少请求 我尝试了ajaxComplete,但它不起作用,我认为它在加载页面后无法检测ajax function ajax1() { $.ajax({ url: 'getCount.php', type: 'GET', dataType: 'html', success: function (data) { var count = parseInt(dat

ajax请求将由用户单击启动

不可能知道将发送多少请求

我尝试了ajaxComplete,但它不起作用,我认为它在加载页面后无法检测ajax

function ajax1() {
    $.ajax({
        url: 'getCount.php',
        type: 'GET',
        dataType: 'html',
        success: function (data) {
            var count = parseInt(data);
            for (var i = 0; i < count; i++) {
                ajax2();
            }
        }
    });
}

function ajax2() {
    $.ajax({
        url: 'getCount2.php',
        type: 'GET',
        dataType: 'html',
        success: function (data) {
            var count = parseInt(data);
            for (var i = 0; i < count; i++) {
                ajax3();
            }
        }
    });
}

function ajax3() {
    $.ajax({
        url: 'ajax3.php',
        type: 'GET',
        dataType: 'html',
        success: function (data) {
            //do something
        }
    });
}
$(document).ajaxComplete(function (event, xhr, settings) {
    alert('Complete');
});
函数ajax1(){
$.ajax({
url:'getCount.php',
键入:“GET”,
数据类型:“html”,
成功:功能(数据){
var count=parseInt(数据);
对于(变量i=0;i

我认为最有意义的方法是执行嵌套回调。这样,所有的事情都在回调中发生,在它们全部完成之前什么都不会发生。这些问题可能会有所帮助

我认为最有意义的方法是进行嵌套回拨。这样,所有的事情都在回调中发生,在它们全部完成之前什么都不会发生。这些问题可能会有所帮助

我认为最有意义的方法是进行嵌套回拨。这样,所有的事情都在回调中发生,在它们全部完成之前什么都不会发生。这些问题可能会有所帮助

我认为最有意义的方法是进行嵌套回拨。这样,所有的事情都在回调中发生,在它们全部完成之前什么都不会发生。这些问题可能有助于更新:非常好地阅读承诺:

通常的做法是使用
$.ajax
函数返回的承诺

更改函数以返回
.ajax
调用的结果:

function ajax1(..) { 
  return $.ajax(...)
}
然后使用
$.when
在解决所有承诺后解决新承诺

$.when([ajax1(), ajax2(), ajax3()]).then(function() { alert('all complete') })
但是,在更复杂的情况下(就像您的情况一样),您需要动态存储对所有承诺的引用,并且只在添加所有承诺后调用
$

例如,您可以创建承诺数组,一个用于
ajax2
调用,一个用于
ajax3
调用

var ajax2calls = [], ajax3calls=[]  

function ajax1() {
  return $.ajax({
    url: 'getCount.php',
    type: 'GET',
    dataType: 'html',
    success: function (data) {
        var count = parseInt(data);
        for (var i = 0; i < count; i++) {
            ajax2calls.push(ajax2());
        }

        $.when(ajax2calls).then(function() {
            $.when(ajax3calls).then(function() {
               alert('all done')
            }
        })

    }
  });
}
var ajax2calls=[],ajax3calls=[]
函数ajax1(){
返回$.ajax({
url:'getCount.php',
键入:“GET”,
数据类型:“html”,
成功:功能(数据){
var count=parseInt(数据);
对于(变量i=0;i

也可以考虑使用允诺库,因为它提供了比常规承诺/A或允诺/ A+更丰富的API。检查<代码> MAP<代码>,<代码>解决< /代码>,<代码>所有< /代码>方法> < /P> < P>更新:非常好的读承诺:

通常的做法是使用
$.ajax
函数返回的承诺

更改函数以返回
.ajax
调用的结果:

function ajax1(..) { 
  return $.ajax(...)
}
然后使用
$.when
在解决所有承诺后解决新承诺

$.when([ajax1(), ajax2(), ajax3()]).then(function() { alert('all complete') })
但是,在更复杂的情况下(就像您的情况一样),您需要动态存储对所有承诺的引用,并且只在添加所有承诺后调用
$

例如,您可以创建承诺数组,一个用于
ajax2
调用,一个用于
ajax3
调用

var ajax2calls = [], ajax3calls=[]  

function ajax1() {
  return $.ajax({
    url: 'getCount.php',
    type: 'GET',
    dataType: 'html',
    success: function (data) {
        var count = parseInt(data);
        for (var i = 0; i < count; i++) {
            ajax2calls.push(ajax2());
        }

        $.when(ajax2calls).then(function() {
            $.when(ajax3calls).then(function() {
               alert('all done')
            }
        })

    }
  });
}
var ajax2calls=[],ajax3calls=[]
函数ajax1(){
返回$.ajax({
url:'getCount.php',
键入:“GET”,
数据类型:“html”,
成功:功能(数据){
var count=parseInt(数据);
对于(变量i=0;i

也可以考虑使用允诺库,因为它提供了比常规承诺/A或允诺/ A+更丰富的API。检查<代码> MAP<代码>,<代码>解决< /代码>,<代码>所有< /代码>方法> < /P> < P>更新:非常好的读承诺:

通常的做法是使用
$.ajax
函数返回的承诺

更改函数以返回
.ajax
调用的结果:

function ajax1(..) { 
  return $.ajax(...)
}
然后使用
$.when
在解决所有承诺后解决新承诺

$.when([ajax1(), ajax2(), ajax3()]).then(function() { alert('all complete') })
但是,在更复杂的情况下(就像您的情况一样),您需要动态存储对所有承诺的引用,并且只在添加所有承诺后调用
$

例如,您可以创建承诺数组,一个用于
ajax2
调用,一个用于
ajax3
调用

var ajax2calls = [], ajax3calls=[]  

function ajax1() {
  return $.ajax({
    url: 'getCount.php',
    type: 'GET',
    dataType: 'html',
    success: function (data) {
        var count = parseInt(data);
        for (var i = 0; i < count; i++) {
            ajax2calls.push(ajax2());
        }

        $.when(ajax2calls).then(function() {
            $.when(ajax3calls).then(function() {
               alert('all done')
            }
        })

    }
  });
}
var ajax2calls=[],ajax3calls=[]
函数ajax1(){
返回$.ajax({
url:'getCount.php',
键入:“GET”,
数据类型:“html”,
成功:功能(数据){
var count=parseInt(数据);
对于(变量i=0;i

也可以考虑使用允诺库,因为它提供了比常规承诺/A或允诺/ A+更丰富的API。检查<代码> MAP<代码>,<代码>解决< /代码>,<代码>所有< /代码>方法> < /P> < P>更新:非常好的读承诺:

通常的做法是使用
$.ajax
函数返回的承诺

换尿布