0

我是 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 请求它们,但正如预期的那样,它们同时执行,因为它是异步的。

4

1 回答 1

1

是的。总的来说,您做得对,但请注意,pipe不赞成使用then.

then.

于 2013-05-02T18:04:23.850 回答