Понимание jQuery Deferred.pipe()

Я пытаюсь реализовать метод jQuery Deferred.pipe() для следующего сценария:

  • Добавить пользователя в БД через $.ajax()
  • Получить ответ, добавлен ли пользователь правильно или нет.
  • Если успешно добавлено, получите весь список пользователей с сервера через $.ajax()
  • Показать список через шаблоны 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)

Но это не работает. Я знаю, что что-то не так или нет. Любая помощь?

Ответ 1

В addUsersSuccess вы должны возвращать getUsers. Это простая опечатка, вы получили основную идею совершенно правильно и используете трубку, как должно быть и красиво:)

Ответ 2

идеально... ты сэкономил много времени для меня. четкое определение и очень описательное решение