这里是情况:
我有2个JS函数,我需要等待这2个方法来做其他事情。
所以我写了:
$.when(foo1(), foo2()).done(function () {
//do something
});
这很好。
但是,在某些情况下,foo2()
必须在我的DOM中加载部分视图:
function foo2() {
$("#bar").load('/controller/action')
}
似乎.done
回调中的代码在foo1()
和foo2()
的末尾执行,而部分视图没有完全加载。 / p>
如何说foo2()
等待部分视图加载结束,然后说“好,我完成工作,可以继续”?
答案 0 :(得分:3)
很遗憾,load()
不会返回承诺或延期对象。相反,要进行此工作,您可以从foo2()
中手动返回一个延迟的对象,您可以在load()
完成后解析该对象。像这样:
function foo2() {
var deferred = $.Deferred()
$("#bar").load('/controller/action', function() {
deferred.resolve();
});
return deferred;
}