jQuery Deferred.pipe() を理解する 質問する

jQuery Deferred.pipe() を理解する 質問する

次のシナリオで 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)

しかし、これは機能しません。何かが欠けているか間違っていることはわかっています。何か助けてもらえますか?

ベストアンサー1

addUsersSuccess では、getUsers を返す必要があります。これは単純なタイプミスです。主なアイデアは完全に正しく、パイプも適切に使用しています :)

おすすめ記事