關於angularjs異步操做後臺請求時,用$q.all排列前後順序的問題

最近我在作angularjs程序時遇到了一個問題angularjs

1.頁面有不少選擇框,一個選擇框裏面有衆多的選擇項,和一個默認選定的項,像下面這樣(不少選擇框,不僅一個):promise

2.衆多的選項要從後臺接口獲得,默認項從另外一個後臺接口獲得,這就須要$promise.then()操做異步

3.而多個$promise.then()屬於異步操做,前後順序不是必定的,若是先獲得衆多選項,後獲得默認值,顯示就沒有問題,若是順序顛倒,默認項就會爲空,這不是我想要的url

4.這就須要衆多選項的後臺請求都得到完,纔去後臺請求默認值,spa

就用$q.all方法blog

let list = $q.all({                      // 多個後臺請求,部分前後順序接口

    url1: getUrl1().$promise,get

    url2: getUrl2().$promise,io

    url3: getUrl3().$promise,function

});

$scope.list.then(function (result) {
  // 三個後臺請求結果
result.url1
result.url2
result.url3
}).finally(function () { // finally的優勢:1.不管成功失敗都會執行 2.前面三個請求結束後纔會執行
// 最後一個後臺請求
   // TODO
});

 

補充:固然還有then().then().then()......這種方法,就把請求順序執行了,不過select衆多選項的後臺請求不須要前後順序,只是默認項須要最後執行,我就選擇$q.all這種方法了

相關文章
相關標籤/搜索