Jquery 链接一系列ajax调用
我有一系列ajax调用需要按顺序运行,但不是同步运行。最好的方法是什么 我知道我可以帮你Jquery 链接一系列ajax调用,jquery,ajax,Jquery,Ajax,我有一系列ajax调用需要按顺序运行,但不是同步运行。最好的方法是什么 我知道我可以帮你$.when().then(),但这只适用于两个ajax调用,不是吗?理想情况下,我想做以下事情: var caller; for (var i = 0; i < argObjects.length; i++) { if (typeof caller === 'undefined') { caller = $.when($.ajax(... data: argObjects[i]
$.when().then()
,但这只适用于两个ajax调用,不是吗?理想情况下,我想做以下事情:
var caller;
for (var i = 0; i < argObjects.length; i++) {
if (typeof caller === 'undefined') {
caller = $.when($.ajax(... data: argObjects[i]...));
}
else {
caller.then($.ajax(... data: argObjects[i]...));
}
}
var调用方;
对于(var i=0;i
换句话说,只要在上加上一个系列,然后
就可以把它们连在一起。但这是不可能的。使用jQuery还有其他方法吗
需要注意的是,这些调用不能同时运行。我可以按setasync:false
在它们上运行一个循环,但这会在用户处理不好的内容时夺走用户的控制权
另一种思考方法是在一个电话中发送所有信息。。。但是,如何在任务运行时监控其进度呢?假设我有10周的数据要更新,我希望在每周完成时收到通知。如果我连续发送10个ajax调用,每个调用都会返回并告诉我它已经完成,我可以更新某种进度条。这才是这里的终极目标
在此期间,我将继续努力解决jQuery中的延迟问题。对于顺序ajax调用,我所说的是在第一个ajax的成功中调用另一个ajax 像这样:-
function ajax1(){
$.ajax({
url: "",
data: dataString,
type: "POST" ,
dataType: "text",
cache: false,
success: function(response_data){
ajax2(); // call second ajax on success
}
});
}
function ajax2(){
$.ajax({
url: "",
data: dataString,
type: "POST" ,
dataType: "text",
cache: false,
success: function(response_data){
}
});
}
您可以采用另一种方法,使用成功处理程序启动下一个ajax调用,只需使用计数器跟踪您正在运行的请求:
var i = 0;
function run() {
$.ajax(... data: argObjects[i]..., function() {
i++;
if (i < argObjects.length) {
run();
}
});
}
run();
var i=0;
函数运行(){
$.ajax(…数据:argObjects[i]…,函数(){
i++;
if(i <代码>如果中间有一个失败,你想继续运行其余的请求吗?将调用链接到success
似乎会阻止它。@slebetman-谢谢。您的解决方案与jfriend00的类似,如果您有点喜欢的话!啊,血腥的递归。为什么我没想到呢?让我来做点什么,看看它是否奏效。@Depressio-它实际上不是技术上的递归(尽管它看起来有点像)。run()
的第一次调用实际上是在调用成功处理程序之前完成的,因此在下一次执行run()
starts.True之前。回调有点不同。不过看起来很像。不管怎样,我试了一下,效果很好。我想我是想用延迟链接太花哨了。:)通过将函数存储在数组中,可以很容易地概括这一点。参见:类似的内容。