AngularJS在app.run()中的承诺

时间:2015-02-19 14:43:56

标签: javascript angularjs promise synchronous

我正在研究angularJs和打字稿项目。在启动客户端应用程序和加载UI之前,我必须进行同步http调用并从服务器获取一些数据。我在互联网上搜索,看到每个人都谈论承诺,huumm好吧为什么不呢。所以我在app.run()中使用promise(make $ http call并使用$ q来返回promise)。也许我一无所获,因为这根本不起作用。 Angular启动app.config(),然后app.run(),...但Angular不会在启动app.run()之前等待app.config()完成。所以我的第一个承诺是在app.run()中启动,在它解决Angular尝试实例化控制器之前......我不想创建新的服务调用httpSynchronous,但我还没有其他任何想法。

1 个答案:

答案 0 :(得分:16)

Angular不支持.config.run函数中的异步操作。如果您想延迟申请,有两种方法:

  • 第一个是通过使用angular.bootstrap()手动启动它来延迟整个应用程序。但是你做的任何事情都是有角度的,所以你除了香草JavaScript之外别无其他任何东西。
  • 第二个是使用路由的resolve属性。如果您使用angular route segmentui router之类的路由器,则可以定义具有解析的顶级路由/状态,该解析将在您的应用程序加载时解析(如果您强制完全重新加载路由)。