[英]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.