理解jQuery Deferred.pipe()

时间:2011-05-07 13:11:01

标签: jquery deferred-execution deferred-loading

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

  1. 通过$ .ajax()
  2. 在数据库中添加用户
  3. 获取是否正确添加用户的响应。
  4. 如果成功添加,请通过$ .ajax()
  5. 从服务器获取所有用户列表
  6. 通过jQuery模板显示列表
  7. 这是我尝试的东西:

    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)
    

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

1 个答案:

答案 0 :(得分:20)

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