在循环中的ajax完成后,Jquery调用另一个函数
我有一个在循环内运行的ajax函数,它依赖于数组中的项目数量。 在完成ajax调用之后和循环之外,如何运行另一个函数? 可能吗?
这是function
function downloadAll(){ downloads = []; $.each(checked, function(key, value) { $.ajax({ method: "POST", url: "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); });
- Yii2中的Ajax + Controller Action
- UpdatePanel和document.ready()Sys.Application.add_load没有添加处理程序
- jQuery fadeIn(),animation()函数是非阻塞的吗?
- 如何在codeigniter中使用ajax上传图像?
- 从Ajax GET调用返回JSON – 在除JSON对象中的第一个记录之外的所有记录上接收未定义的错误
- Struts2 – 使用jquery ajax从数据库加载信息
- 未定义的索引:ajax POST和/或php脚本出错?
- jQuery无法在AJAX Loaded页面中工作
- 是否可以使用远程链接返回HTML(而不是JS)数据?