我是 jquery 的新手,$.Deferred
似乎我无法理解关于异步处理的一大堆东西。
假设我想遍历用户名并登录它们,处理一些事情,然后注销(这可能不需要包含在这个问题中)。
如果我有这 2 个用户/密码组合,我想遍历它们,登录它们并执行必要的操作。
[{"username":"user1","password":"HardToKnow"},
{"username":"user2","password":"HardToKnow"}]
我已经根据我阅读的内容创建了这个函数,尽管我不确定它是如何工作的。
function login(user, pass) {
var d = $.Deferred();
$.post(
'http://www.domain.com/login',
{
user: user,
passwrd: pass
}
).done(function(s){
d.resolve(s);
}).fail(d.reject);
return d.promise();
}
上面的函数显然是用于登录的,现在我将有另一个函数,它必须有另一个异步请求。
function setTodo(user,pass) {
return login(user,pass)
.pipe(function(s){
if (s.indexOf('<li class="greeting">Hello <span>' + user + '</span></li>')) {
return $.post().....?
}
return set(usr, pw);
});
}
上面的那个函数,虽然不完整,但我只是我的想法,将尝试设置一个待办事项,稍后将调用另一个函数来提交或完成待办事项
function submit(user, pass) {
return setTodo(user, pass)
.pipe(function(s){
// another $.post() here...
}
}
问题,我做得对吗?延期的?如何循环访问登录凭据?我尝试使用 $.each 和 ajax 请求它们,但正如预期的那样,它们同时执行,因为它是异步的。