簡體   English   中英

使用Angular的resolve:時,兌現承諾的最佳方法是什么?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM