解決Angularjs異步操作后臺(tái)請求用$q.all排列先后順序問題
最近我在做angularjs程序時(shí)遇到了一個(gè)問題
1.頁面有很多選擇框,一個(gè)選擇框里面有眾多的選擇項(xiàng),和一個(gè)默認(rèn)選定的項(xiàng),像下面這樣(很多選擇框,不只一個(gè)):

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

