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

2.眾多的選項(xiàng)要從后臺接口得到,默認(rèn)項(xiàng)從另一個(gè)后臺接口得到,這就需要$promise.then()操作
3.而多個(gè)$promise.then()屬于異步操作,先后順序不是一定的,如果先得到眾多選項(xiàng),后得到默認(rèn)值,顯示就沒有問題,如果順序顛倒,默認(rèn)項(xiàng)就會為空,這不是我想要的
4.這就需要眾多選項(xiàng)的后臺請求都獲得完,才去后臺請求默認(rèn)值,
就用$q.all方法
let list = $q.all({ // 多個(gè)后臺請求,部分先后順序
url1: getUrl1().$promise,
url2: getUrl2().$promise,
url3: getUrl3().$promise,
});
$scope.list.then(function (result) {
// 三個(gè)后臺請求結(jié)果
result.url1
result.url2
result.url3
}).finally(function () { // finally的優(yōu)點(diǎn):1.無論成功失敗都會執(zhí)行 2.前面三個(gè)請求結(jié)束后才會執(zhí)行
// 最后一個(gè)后臺請求
// TODO
});
補(bǔ)充:當(dāng)然還有then().then().then()......這種方法,就把請求順序執(zhí)行了,不過select眾多選項(xiàng)的后臺請求不需要先后順序,只是默認(rèn)項(xiàng)需要最后執(zhí)行,我就選擇$q.all這種方法了。
總結(jié)
以上所述是小編給大家介紹的解決Angularjs異步操作后臺請求用$q.all排列先后順序問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
Angular 1.x個(gè)人使用的經(jīng)驗(yàn)小結(jié)
這篇文章主要給大家介紹了關(guān)于Angular 1.x個(gè)人使用的一些經(jīng)驗(yàn),屬于一些基礎(chǔ)入門教程,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-07-07
Angularjs根據(jù)json文件動(dòng)態(tài)生成路由狀態(tài)的實(shí)現(xiàn)方法
最近做項(xiàng)目遇到這樣一個(gè)新需求,就是需要根據(jù)json文件動(dòng)態(tài)生成路由狀態(tài),通過查閱相關(guān)資料實(shí)現(xiàn)了此功能,下面小編把問題總結(jié)分享到腳本之家平臺供大家參考2017-04-04
AngularJS實(shí)現(xiàn)動(dòng)態(tài)編譯添加到dom中的方法
這篇文章主要介紹了AngularJS實(shí)現(xiàn)動(dòng)態(tài)編譯添加到dom中的方法,結(jié)合實(shí)例形式分析了AngularJS動(dòng)態(tài)編輯構(gòu)建模板的相關(guān)操作技巧,需要的朋友可以參考下2016-11-11
Angular ui.bootstrap.pagination分頁
這篇文章主要為大家詳細(xì)介紹了Angular ui.bootstrap.pagination 分頁的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01

