javascript - 使用 Angular 的解析 : {}? 时链接 promise 的最佳方式是什么

标签 javascript angularjs angular-promise

我正在使用 Angular 的解析,并希望链接两个 Promise。解决这个问题的最佳方法是什么?本质上,我想要:

resolve: {
    my_two_lists: function() {
    return MyService.list().then(function(array1) {     
         return MyOtherService.list().then(function(array2) { 
               return new Promise(function(resolve, reject) { 
                    resolve(array1.concat(array2)); 
               }); 
          }); 
       });
    }
}

换句话说:我有 2 个服务,每个服务都有两个名为“list”的方法,它们返回一个解析为列表的 promise 。我想将两个由此产生的 promise 链接起来。

最佳答案

我从 Javascript Promise 中学到的东西 - 如果你有不止一层的嵌套,会有更好的方法。

这是一个更简洁的解决方案,您可以并行调用两个 list 命令。

resolve: {
    my_two_lists: function() {
            return Promise.all([MyService.list(), MyOtherService.list()])
                   .then(function(values) {
                        return values[0].concat(values[1]));
                   });
    }
}

如果出于某种原因,您想一个接一个地调用它们,那么您的示例是正确的,只是不需要返回另一个 promise 。只需返回一个值即可。 my_two_lists 的结果仍然是一个解析为两个数组串联的 Promise。

resolve: {
    my_two_lists: function() {
    return MyService.list().then(function(array1) {     
         return MyOtherService.list().then(function(array2) { 
               return array1.concat(array2);
          }); 
       });
    }
}

关于javascript - 使用 Angular 的解析 : {}? 时链接 promise 的最佳方式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31196000/

相关文章:

javascript - 开发 Angular 应用程序并在有或没有现有 Spring MVC 应用程序的情况下使用它

angularjs - 如何从finally block 访问$http响应

angularjs - 链接 ngResource $promise 成功和错误

javascript - Angular Controller 在工厂完成之前正在执行

javascript - Google oauth2 使用 javascript 获取 accessToken

javascript - 暂停 For 循环 jQuery 问题

javascript - IE 中的全局变量异常

angularjs - 如何尽快开始从服务器获取数据?

javascript - 使用服务的输出到 Controller

javascript - 将鼠标悬停在 anchor 旁边的图像上时显示隐藏 Div?