【发布时间】:2015-06-29 12:18:00
【问题描述】:
我有需要进行 5 次 ajax 调用的情况。第二次ajax调用将在第一次调用返回响应后进行,第三次调用在第二次调用完成时进行,第四次和第五次调用也是如此。
我知道有 2 种方法,我可以在前一次调用成功时嵌套 ajax 调用,或者在第一次调用之前将异步设为 false,在最后一次调用后设为 true。任何人都可以建议哪个是以及为什么它是完成我的任务的更好方法,或者有更好的方法来做到这一点。
//First Way
$.ajax({
...
success:function(){
$.ajax({
...
success:function(){
$.ajax({
...
success:function(){
$.ajax({
...
success:function(){
do something
}
});
}
});
}
});
}
});
//second way
$.ajaxSetup({
async: false
});
$.ajax({
});
$.ajax({
});
$.ajax({
});
$.ajax({
});
$.ajax({
});
$.ajaxSetup({
async: true
});
【问题讨论】:
-
每次请求后执行的逻辑是什么?每个的逻辑是否相似,或者您只需要确保调用按此顺序发生?另请注意,
async: false非常糟糕。几乎是eval级别的差;) -
请告诉我们导致您这样做的原因和情况。
-
@RoryMcCrossan 我的要求是调用一个接一个的顺序
-
在这种情况下,您需要像第一个示例一样链接您的调用。
-
这里需要 Promise。要了解更多信息:javascriptplayground.com/blog/2015/02/promises 或者 jQuery 可以帮助您 api.jquery.com/category/deferred-object
标签: javascript jquery ajax