有没有办法在 AngularUI 路由器中的任何子解析之前解决承诺

Is there a way to resolve a promise before any sub-resolves in AngularUI Router

我在 coffeescript 中有 2 个状态...

stateProvider.state  'test',
    ...
    resolve:
        user: (LongRunning)->
            LongRunning.authenticate().then ->
                console.log("We are authenticated!")

stateProvider.state  'test.child',
    ...
    resolve:
        other: (AfterAuth)->
            AfterAuth.soSomethingWithAuth().then ->
                console.log("We are done!")

当然这是行不通的,因为子解析在父的auth方法解析之前就已经开始了。这意味着第二个函数不会被验证并导致整个状态失败。

现在它不一定是状态路径的一部分,但它需要在调用解析函数时完全完成。

在调用子方法之前,如何确保父函数已完全解析?

错误 (?) 解决方案

我能想到的一个答案是使用手动 bootstrap 过程。但是,这很乏味,因为我需要重新连接所有服务。反正我可以在Angular里面做吗?

您使用 AngularUI 路由器用于 Angular 2 还是 AngularJS?我认为这是 AngularJS,因为您使用 coffeescript 和 AngularUI 路由器。这是 Angular 标签,不是 AngularJS。

无论如何,在 AngularUI 路由器中,一个解析器可以依赖于另一个解析器。类似的东西:

 function firstStep($stateParams, resolveStatus) {
   return $q.resolve();
 }

 resolve: {
   firstStep: firstStep,
   secondStep: ['firstStep', function (firstStep) {
   ...
   }]
 }