Javascript 使用Angular';s解决:{}?

Javascript 使用Angular';s解决:{}?,javascript,angularjs,angular-promise,Javascript,Angularjs,Angular Promise,我正在使用angular的决心,并希望连锁两个承诺。最好的方法是什么?本质上,我希望: resolve: { my_two_lists: function() { return MyService.list().then(function(array1) { return MyOtherService.list().then(function(array2) { return new Promise(function(r

我正在使用angular的决心,并希望连锁两个承诺。最好的方法是什么?本质上,我希望:

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)); 
               }); 
          }); 
       });
    }
}

换句话说:我有两个服务,每个服务都有两个名为“list”的方法,它们返回一个承诺,解析为list。我想把这两个承诺联系起来。

我从Javascript承诺中学到了一些东西——如果您有多个嵌套级别,那么会有更好的方法

这里有一个更简洁的解决方案,您可以调用parralel中的两个
list
命令

resolve: {
    my_two_lists: function() {
            return Promise.all([MyService.list(), MyOtherService.list()])
                   .then(function(values) {
                        return values[0].concat(values[1]));
                   });
    }
}
如果出于某种原因,你想一个接一个地给他们打电话,那么你的例子是正确的,除非你不需要再回信。只需返回一个值。
my_two_list
的结果仍然是解决两个数组串联的承诺

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

我从Javascript承诺中学到了一些东西——如果您有多个嵌套级别,那么会有更好的方法

这里有一个更简洁的解决方案,您可以调用parralel中的两个
list
命令

resolve: {
    my_two_lists: function() {
            return Promise.all([MyService.list(), MyOtherService.list()])
                   .then(function(values) {
                        return values[0].concat(values[1]));
                   });
    }
}
如果出于某种原因,你想一个接一个地给他们打电话,那么你的例子是正确的,除非你不需要再回信。只需返回一个值。
my_two_list
的结果仍然是解决两个数组串联的承诺

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

困惑之后删除了我的答案。你打算使用ES6 promise还是angular$q promise?@PSL-我认为你回答得很好-让他在两种框架中选择一种。你真的想链接它们吗?并行执行它们似乎没有什么问题。这是什么
resolve
函数,你的意思是
$q.resolve
?@Bergi-他正在调用
新承诺(函数(resolve,reject){})
resolve`是当您想要解析刚刚创建的新承诺时调用的函数。在感到困惑后,请删除我的答案。你打算使用ES6 promise还是angular$q promise?@PSL-我认为你回答得很好-让他在两种框架中选择一种。你真的想链接它们吗?并行执行它们似乎没有什么问题。这是什么
resolve
函数,你的意思是
$q.resolve
?@Bergi-他正在调用
新承诺(函数(resolve,reject){})
resolve`是您在想要解析刚刚创建的新承诺时调用的函数。太棒了!非常感谢你!伟大的非常感谢你!