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 回答