[英]What is the best way to chain promises when using Angular's resolve: {}?
我正在使用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));
});
});
});
}
}
换句话说:我有2个服务,每个服务都有两个称为“列表”的方法,这些方法返回一个可以解析为列表的promise。 我想将两个由此产生的诺言联系起来。
我从Javascript承诺中学到的知识-如果您具有多个层次的嵌套,将有更好的方法。
这是一个更清洁的解决方案,您可以在其中并行调用两个list
命令。
resolve: {
my_two_lists: function() {
return Promise.all([MyService.list(), MyOtherService.list()])
.then(function(values) {
return values[0].concat(values[1]));
});
}
}
如果出于某种原因,您想要一个接一个地称呼它们,那么您的示例是正确的,除了无需再返回另一个承诺。 只需返回一个值。 my_two_lists
的结果仍然是一个承诺,可以解决两个数组的串联问题。
resolve: {
my_two_lists: function() {
return MyService.list().then(function(array1) {
return MyOtherService.list().then(function(array2) {
return array1.concat(array2);
});
});
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.