javascript-使用deferred链接具有多个ajax调用的循环
作者:互联网
关于此问题,已经有多个问题已经解决,但是到目前为止,这种设置都无法解决.
function login(u,p) {
console.log(1);
return $.post(url, {u,p});
}
function out() {
console.log(3);
//a function that does not return deferred
// clear cookies
}
function doSomething() {
console.log(2);
// a function that returns a deferred
return $.post(...);
}
var data = [{u: 'au', p: 'ap'}, {u: 'bu', p: 'bp'}]
$.each(data, function(k,v){
login(v.u, v.p).then(doSomething).then(out);
});
我期望它的序列是这样的:
1
2
3
1
2
3
但是我明白了
1
2
1
3
2
3
为什么会这样呢,即使我正在等着用
解决方法:
如果您希望登录同步运行:
var p = new jQuery.Deferred();
$.each(data, function(k,v){
p.then(function() {
return login(v.u, v.p);
}).then(doSomething).then(out);
});
$中迭代的每个新项目,直到p完成最后一个为止,每个新项目都不会触发新响应.
标签:ajax,jquery-deferred,javascript,jquery 来源: https://codeday.me/bug/20191121/2055335.html