0

AJAX 要求を実行する場合と実行しない場合がある関数を考えてみましょう。$.ajaxインスタンスを返しDeferredます。連鎖可能性のために、関数は常にDeferredインスタンスを返す必要があります。

function doAjaxReq() {
    if (conditional_is_true) {
         return (
              $.ajax(
               ....
              );
         );
    } else {
        // Create a Deferred instance
        var deferred = $.Deferred();
        // Set the Deferred state to "done"
        // ????
        return deferred;
    }
}

doAjaxReq2、などの他のいくつかの同様の関数を想像してみてくださいdoAjaxReq3。これらは次のように連鎖します。

doAjaxReq()
    .done(function() {
        doAjaxReq2()
            .done(function() {
                ....
            })
        .fail(ajaxFailHandler)
    })
    .fail(ajaxFailHandler);

Deferred新しいオブジェクトのデフォルト状態はどのように設定できますか? この場合、解決済みの状態に設定してdone()、AJAX 要求が試行されなくてもコールバックがすぐにトリガーされるようにします。

4

1 に答える 1

1
return $.Deferred().resolve();

http://api.jquery.com/deferred.resolve/

于 2013-02-25T23:40:58.050 に答える