以下是有问题的代码行:
$.when(dashboard.update.call(this)).then(dashboard.updateCompleted);
问题是,dashboard.update
调用了另外一系列5个左右的函数。 dashboard.update
完成调用这些函数后或者这些函数实际完成后是否完成了?
我问的原因是因为在dashboard.updateCompleted
调用的函数完成之前,似乎正在调用dashboard.update
。有办法解决这个问题吗?
答案 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
}