0

deferred.then()的文档指出 doneCallbacks 是A function, or array of functions, called when the Deferred is resolved.

当我写任何一个 .then(new Array(getData2, showDiv)).then([getData2, showDiv]) 没有一个被调用时。

什么是正确的语法?

更新

数组的语法应该是括号.then(new Array(getData2(), showDiv()))还是 .then([getData2(), showDiv()])括号?

http://jsfiddle.net/JSw5y/894/

4

1 回答 1

-1

似乎是jQuery 中的一个错误。

一个简单的解决方法;

var CallbackHandler = (function () {
    var callbacks = [];

    return {
        'add': function (fn) {
            callbacks.push(fn);
            return this;
        },
        'executor': function () {
            var calledBy = this;
            $.each(callbacks, function () {
                this.call(calledBy);
            });
        }
    };

})();

CallbackHandler
    .add(function () {
        // first callback
    })
    .add(function () {
        // second callback
    });

// Called as:
$.when({a: 1})
 .then(CallbackHandler.executor);
于 2012-10-02T12:07:29.500 回答