使用 Angular 的 resolve:{} 时,链接 promises 的最佳方式是什么?
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 个服务,每个服务都有两个方法,称为 "list" 和 return,嗯,一个解析为列表的承诺。我想链接这两个结果承诺。
我从 Javascript promises 中学到的东西 - 如果你有不止一层的嵌套,会有更好的方法。
这是一个更简洁的解决方案,您可以在其中并行调用两个 list
命令。
resolve: {
my_two_lists: function() {
return Promise.all([MyService.list(), MyOtherService.list()])
.then(function(values) {
return values[0].concat(values[1]));
});
}
}
如果出于某种原因,您想一个接一个地调用它们,那么您的示例是正确的,只是不需要 return 另一个承诺。只是 return 一个值。 my_two_lists
的结果仍然是一个解决两个数组连接的承诺。
resolve: {
my_two_lists: function() {
return MyService.list().then(function(array1) {
return MyOtherService.list().then(function(array2) {
return array1.concat(array2);
});
});
}
}
我正在使用 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 个服务,每个服务都有两个方法,称为 "list" 和 return,嗯,一个解析为列表的承诺。我想链接这两个结果承诺。
我从 Javascript promises 中学到的东西 - 如果你有不止一层的嵌套,会有更好的方法。
这是一个更简洁的解决方案,您可以在其中并行调用两个 list
命令。
resolve: {
my_two_lists: function() {
return Promise.all([MyService.list(), MyOtherService.list()])
.then(function(values) {
return values[0].concat(values[1]));
});
}
}
如果出于某种原因,您想一个接一个地调用它们,那么您的示例是正确的,只是不需要 return 另一个承诺。只是 return 一个值。 my_two_lists
的结果仍然是一个解决两个数组连接的承诺。
resolve: {
my_two_lists: function() {
return MyService.list().then(function(array1) {
return MyOtherService.list().then(function(array2) {
return array1.concat(array2);
});
});
}
}