使用jQuery 3.2.1,我要链接$阿贾克斯调用是这样的:如何正确链接ajax调用?
function get(i) {
return $.ajax(...)
.done(function() { console.log('get done: ' + i) })
.fail(function() { console.log('get failed: ' + i) })
}
var p = Promise.resolve();
for (var i = 0; i < len; i++) {
p = p.then(get(i));
}
p.done(function() { console.log('Finished') });
,我会想到的是,AJAX调用对于i = 1就不会执行,直到呼吁I = 0已经解决。同样,最终完成()应该等待所有的调用按顺序执行
实际上,我看到'已完成',然后我看到其他任何东西,'完成'以随机顺序返回(第一个完成回来的是我的猜测)。
我已经习惯了蓝鸟,这将工作。我究竟做错了什么?
*附录I *
添加到上面,我加载具有依赖性,因此需要在顺序加载JavaScript文件。因此,第一必须完成第二次取开始前,否则依赖将失败
2017-04-01
ekkis
+0
我没碰到过这样的:http://stackoverflow.com/questions/16384841/chain-ajax-and-execute-it-in-sequence -jquery-deferred但没有明确的答案 –
+0
如果你想'同步'ajax调用你应该嵌套它们或遵循你链接的问题的答案,将它们设置为回调。 –
+0
@Dez,但我嵌套它们。那么'p = p.then(...)'不会让他们陷入困境? –