[英]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.