簡體   English   中英

ajax循環完成后,jQuery調用另一個函數

[英]Jquery call another function after ajax in loop is done

我有一個循環內運行的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);
}

讓我們從所有調用成功之后開始,這很容易:

success: function(data){
      downloads.push(data);
      $('.loading').fadeOut("slow");
      if(downloads.length===checked.length){//suppose checked is array like
        alert("finish");
      }
 },

循環外更加困難,因為它實際上不是循環,需要進行一些修改。 您基本上想等待多個Promises(Promise.all):

Promise.all(checked.map(function(value){
 return Promise(function(resolve){
  $.ajax({... ,success:resolve});
 });
})).then(function(downloads){
 console.log("finished",downloads);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM