我已经看到了很多关于此的问题,但似乎没有什么可以为我的案例提供正确的答案。我也看到了使用的答案,.pipe
但我正在寻找使用的答案.then
。
好的。我需要进行 3 次 ajax 调用,比如说一个允许多个帐户的投票应用程序。为了使帐户可以投票,需要完成的过程如下。
- 登录
- 选择选项
- 提交
- 注销(只需清除 cookie,无需发布)。
假设我有 2 个帐户:
var accts = [{user: "acct1", pswd: "1234"},{user: "acct2", pswd: "4321"}];
现在我需要使用 jquery 遍历这些帐户$.each
$.each(accts, function(key,value){
});
我了解到 using$.Deferred
可以完美地做到这一点,但要正确实施。
我想要的是
--------loop1--------
login
select
vote
--------loop2--------
login
select
vote
All Done!.
但是发生的事情是(当我尝试console.log
了解正在发生的事情时)全部完成!登录(2) 选择(2) 投票(2)
所以这是我的代码:
$.each(data, function(k, v) {
promise.then(function() {
return $.post(loginURL, {user: v.username, passwrd: v.password});
}).then(function(html) {
if (data > 0) {
console.log('Logged In!');
return $.post(pollURL + 'select.php', {id: 143});
} else {
console.log('Login Failed.');
return false;
}
}).then(function(data) {
if (data === 'selected') {
console.log('Already have a selection.');
return false;
} else {
return $.post(pollURL + 'submit.php');
}
}).then(function(data){
if(data > 1) {
Console.log('Successfully Voted.');
} else {
// if possible return to the login?
}
});
});
promise.done(function() {
console.log('All Done. Logged out.');
});
我究竟做错了什么?。