Javascript Jquery在完成ajax in循环后调用另一个函数

Javascript Jquery在完成ajax in循环后调用另一个函数,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个在循环中运行的ajax函数,它取决于数组中项目的数量。在ajax调用完成后,如何在循环之外运行另一个函数?可能吗 这就是函数 function downloadAll(){ downloads = []; $.each(checked, function(key, value) { $.ajax({ method: "POST", url: "<?php echo site_url($this->

我有一个在循环中运行的ajax函数,它取决于数组中项目的数量。在ajax调用完成后,如何在循环之外运行另一个函数?可能吗

这就是函数

function downloadAll(){
    downloads = [];
    $.each(checked, function(key, value) {
        $.ajax({
            method: "POST",
            url: "<?php echo site_url($this->data['controller'].'/Download/'); ?>",
            data:'id='+value,
            beforeSend: function () {
                $('.loading').show();
            },
            success: function(data){
                downloads.push(data);
                $('.loading').fadeOut("slow");
            },
        });
    }); 
    processZip(downloads);
}
函数下载全部(){
下载=[];
$。每个(选中,函数(键,值){
$.ajax({
方法:“张贴”,
url:“”,
数据:'id='+值,
beforeSend:函数(){
$('.loading').show();
},
成功:功能(数据){
下载.推送(数据);
$('.loading')。淡出(“慢速”);
},
});
}); 
processZip(下载);
}
让我们从所有呼叫成功后开始,这非常简单:

success: function(data){
      downloads.push(data);
      $('.loading').fadeOut("slow");
      if(downloads.length===checked.length){//suppose checked is array like
        alert("finish");
      }
 },
外部循环更难,因为它不是真正的循环,需要一些修改。您基本上希望等待多个承诺(Promise.all):

让我们从所有呼叫成功后开始,这非常简单:

success: function(data){
      downloads.push(data);
      $('.loading').fadeOut("slow");
      if(downloads.length===checked.length){//suppose checked is array like
        alert("finish");
      }
 },
外部循环更难,因为它不是真正的循环,需要一些修改。您基本上希望等待多个承诺(Promise.all):


您可以尝试保留一个计数器并在成功时递增它,然后检查是否(计数器==checkedItemlength)调用processZip(下载)。您可以尝试保留一个计数器并在成功时递增它,然后检查是否(计数器==checkedItemlength)调用processZip(下载)哦!我认为检查下载长度匹配检查长度是伟大的!非常感谢。哦我认为检查下载长度匹配检查长度是伟大的!非常感谢。