【发布时间】:2012-12-31 07:35:17
【问题描述】:
在routeProvider 中,如果我们给出一个包含promise 的resolve 对象,我们可以持有routing;它会等到所有的承诺都得到解决。但是,我在应用程序的初始化中找不到方法。
有angular.module("app", []).run(function (){ //init app }),但对于异步的$resource 或$http,应用程序可以在解决依赖关系(承诺)之前完成初始化,这将创建一个race condition。我们不希望这样。
所以问题是,有没有一种方法可以保持service 的初始化,直到所有给定的承诺都得到解决?
【问题讨论】:
-
将回调设置为手动初始化 Promise 会起作用,但是它并不优雅,Angular 有一个很好的 DI,为什么我们不能从中受益呢?就像如果依赖是一个promise,在继续之前解决它
-
由于您没有包含 yourj 应用程序的实际代码,我无法确定,但我认为这个问题涵盖了同样的问题:stackoverflow.com/questions/12265565/…
-
不,我想保留服务的初始化,直到承诺得到解决,这是一个通用问题,不需要来源。
-
如果您从
run中运行$timer,它将通过.call()保持其状态,所以我认为这可能是最优雅的。等待向run()发出信号的承诺,它们已解决,它会取消$timer。文档似乎使这听起来像他们想要的那样工作。
标签: javascript angularjs