Javascript 在多次ajax请求后执行函数
我试图在6次ajax调用后执行一个函数(每次调用后都保留“.done”部分) 我试过使用$。when,但似乎没有达到我想要的效果 编辑: 我已经包括了一个全局计数器和函数,在所有调用都必须压缩一些创建的文件之后,是否有必要将超时设置为等待,或者是$。什么时候足够Javascript 在多次ajax请求后执行函数,javascript,jquery,Javascript,Jquery,我试图在6次ajax调用后执行一个函数(每次调用后都保留“.done”部分) 我试过使用$。when,但似乎没有达到我想要的效果 编辑: 我已经包括了一个全局计数器和函数,在所有调用都必须压缩一些创建的文件之后,是否有必要将超时设置为等待,或者是$。什么时候足够 function zipAll(){ $.ajax({ method: "POST", url: "zipAll.php", }).done(functio
function zipAll(){
$.ajax({
method: "POST",
url: "zipAll.php",
}).done(function(){
window.location = "uptimeReports.zip";
console.log("hola");
});
}
$.ajax
返回类似承诺的对象。当时,将(所有6个)输入到$。另外,不要使用.done
而是.then
以保持一致性,因为承诺使用。then
function showReports(array_monitor){
return $.ajax(...).then(function(xml){
// Do some parsing
return finalValue;
});
}
$.when.apply(null, [
showReports(...),
showReports(...),
showReports(...),
showReports(...),
showReports(...),
showReports(...),
]).then(function(result1, result2,...){
// All done
});
还要确保从showReports
的返回一个值,然后返回回调。它是promise的解析值,它成为传递到$中的值。当$时。ajax
返回类似promise的对象。当
时,将(所有6个)输入到$。另外,不要使用.done
而是.then
以保持一致性,因为承诺使用。then
function showReports(array_monitor){
return $.ajax(...).then(function(xml){
// Do some parsing
return finalValue;
});
}
$.when.apply(null, [
showReports(...),
showReports(...),
showReports(...),
showReports(...),
showReports(...),
showReports(...),
]).then(function(result1, result2,...){
// All done
});
还要确保从showReports
的返回一个值,然后返回回调。它是承诺的解析值,成为传递到$中的值。当时,您可以使用jQuery方法$。当时。每个jQuery ajax调用都返回promise,当您调用$时。当
处理所有这些承诺时,您的回调将在解决所有这些承诺后被调用:
var xhr1 = $.ajax({ dataType: "json", url: '' });
var xhr2 = $.ajax({ dataType: "json", url: '' });
// etc ...
$.when(xhr1, xhr2, ...).then(function(xhr1Result, xhr2Result, ...) {
// You've got your results
});
您可以使用jQuery方法$。每个jQuery ajax调用都返回promise,当您调用$时。当
处理所有这些承诺时,您的回调将在解决所有这些承诺后被调用:
var xhr1 = $.ajax({ dataType: "json", url: '' });
var xhr2 = $.ajax({ dataType: "json", url: '' });
// etc ...
$.when(xhr1, xhr2, ...).then(function(xhr1Result, xhr2Result, ...) {
// You've got your results
});
存储在done
回调中递增的计数器。当它达到6时,执行你的函数。@Igor它不需要是全局计数器,它可以是本地的。我也试过了,这似乎是有道理的,但在所有ajax请求之后我必须调用的函数必须压缩在.rar中之前创建的所有csv,并且我在最后一次调用中收到一个错误,尽管所有文件都正确添加了。done
回调中增加的存储计数器的可能副本。当它达到6时,执行你的函数。@Igor它不需要是全局计数器,它可以是本地的。我也试过了,这似乎是有道理的,但在所有ajax请求之后我必须调用的函数必须在.rar中压缩之前创建的所有csv,并且我在最后一次调用中收到一个错误,尽管所有文件都正确添加了可能的副本