解決Angularjs異步操作后臺請求用$q.all排列先后順序問題
最近我在做angularjs程序時遇到了一個問題
1.頁面有很多選擇框,一個選擇框里面有眾多的選擇項(xiàng),和一個默認(rèn)選定的項(xiàng),像下面這樣(很多選擇框,不只一個):
2.眾多的選項(xiàng)要從后臺接口得到,默認(rèn)項(xiàng)從另一個后臺接口得到,這就需要$promise.then()
操作
3.而多個$promise.then()
屬于異步操作,先后順序不是一定的,如果先得到眾多選項(xiàng),后得到默認(rèn)值,顯示就沒有問題,如果順序顛倒,默認(rèn)項(xiàng)就會為空,這不是我想要的
4.這就需要眾多選項(xiàng)的后臺請求都獲得完,才去后臺請求默認(rèn)值,
就用$q.all方法
let list = $q.all({ // 多個后臺請求,部分先后順序 url1: getUrl1().$promise, url2: getUrl2().$promise, url3: getUrl3().$promise, }); $scope.list.then(function (result) { // 三個后臺請求結(jié)果 result.url1 result.url2 result.url3 }).finally(function () { // finally的優(yōu)點(diǎn):1.無論成功失敗都會執(zhí)行 2.前面三個請求結(jié)束后才會執(zhí)行 // 最后一個后臺請求 // TODO });
補(bǔ)充:當(dāng)然還有then().then().then()......
這種方法,就把請求順序執(zhí)行了,不過select眾多選項(xiàng)的后臺請求不需要先后順序,只是默認(rèn)項(xiàng)需要最后執(zhí)行,我就選擇$q.all這種方法了。
總結(jié)
以上所述是小編給大家介紹的解決Angularjs異步操作后臺請求用$q.all排列先后順序問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
AngularJS轉(zhuǎn)換響應(yīng)內(nèi)容
這篇文章主要介紹了AngularJS轉(zhuǎn)換響應(yīng)內(nèi)容 的相關(guān)資料,需要的朋友可以參考下2016-01-01Angular 4 依賴注入學(xué)習(xí)教程之FactoryProvider的使用(四)
這篇文章主要給大家介紹了關(guān)于Angular 4 依賴注入之FactoryProvider使用的相關(guān)資料,文中介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Angular4具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-06-06Angular2中constructor和ngOninit的使用講解
這篇文章主要介紹了Angular2中constructor和ngOninit的使用講解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05