这个JQuery推迟正常工作吗?

时间:2014-05-26 03:47:33

标签: javascript jquery callback jquery-deferred

以下是有问题的代码行:

$.when(dashboard.update.call(this)).then(dashboard.updateCompleted);

问题是,dashboard.update调用了另外一系列5个左右的函数。 dashboard.update完成调用这些函数后或者这些函数实际完成后是否完成了?

我问的原因是因为在dashboard.updateCompleted调用的函数完成之前,似乎正在调用dashboard.update。有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

要使用when(),必须将deferred对象传递给when()。

中的函数

我刚看到与你非常相似的情况。我为使代码工作所做的工作是:

$.when(func1($.Deferred()),
       func2($.Deferred()),
       func3($.Deferred()),
       func4($.Deferred())
).done(function() {
    alert('Finished!');
}

在每个函数中,必须调用resolved()或rejected()来通知$ .when()。例如,

function func1(def) { 
    A_async_call(function (status) {
        if (status == OK) {
           def.resolve(); /// Tell $.when, this function finished
        } else {
           def.reject();  /// tell $.when, a function failed
        }
    })
    return def; // return defered object to when, for later use
}