理解jQuery Deferred.pipe()

Ash*_*ish 20 jquery deferred-loading deferred-execution

我正在尝试为以下场景实现jQuery Deferred.pipe()方法:

  1. 通过$ .ajax()在DB中添加用户
  2. 获取是否正确添加用户的响应.
  3. 如果成功添加,请通过$ .ajax()从服务器获取所有用户列表
  4. 通过jQuery模板显示列表

这是我尝试过的东西:

var addUserSuccess = function( data ) {
    if ( data.returnCode !== "success" ) {
        return $.Deferred().reject('Error saving user');
    }
    getUsers();
}

var addUser = function() {
    return $.ajax(url, {
        type: "POST",
        data: { username: 'test' },
        contentType: "application/json",
        dataType: "json"
    });
}

var displayUsers = function( data ) {
    $('#myTmpl').tmpl(data.d).appendTo('#myDiv');
}

var getUsers = function () {
    return $.ajax(url, {
        type: "GET",
        data: {},
        contentType: "application/json",
        dataType: "json"
    });
}

$.when(addUser()).pipe(addUserSuccess).then(displayUsers)
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我知道有些东西遗失或错误.有帮助吗?

Jul*_*urg 20

在addUsersSuccess中,您应该返回getUsers.这是一个简单的错字,你完全正确的主要想法,并使用管道,它应该是很好:)

  • 来自代码作者的答案+1 :) (5认同)