情况是这样的:
我有2个JS函数,我需要等待这2个方法来做其他事情。
所以我写了:
$.when(foo1(), foo2()).done(function () {
//do something
});
这很有效。
但是,在某些情况下,foo2()
必须在我的 DOM 中加载部分 View :
function foo2() {
$("#bar").load('/controller/action')
}
看来 .done
回调中的代码是在 foo1()
和 foo2()
结束时执行的 而部分 View 未完全加载。
我怎么能告诉 foo2()
等待部分 View 加载结束,然后再说“好的,我完成了我的工作,你可以继续”?
最佳答案
不幸的是,load()
没有返回一个 promise 或 deferred 对象。相反,要使这项工作正常进行,您可以从 foo2()
手动返回一个延迟对象,您在 load()
完成后解析该对象。像这样:
function foo2() {
var deferred = $.Deferred()
$("#bar").load('/controller/action', function() {
deferred.resolve();
});
return deferred;
}
关于javascript - 在同步方法中等待异步方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53104772/