溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何解決Angularjs異步操作后臺(tái)請(qǐng)求用$q.all排列先后順序的問題

發(fā)布時(shí)間:2021-07-20 09:32:49 來源:億速云 閱讀:164 作者:小新 欄目:web開發(fā)

這篇文章主要介紹了如何解決Angularjs異步操作后臺(tái)請(qǐng)求用$q.all排列先后順序的問題,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

最近我在做angularjs程序時(shí)遇到了一個(gè)問題

1.頁面有很多選擇框,一個(gè)選擇框里面有眾多的選擇項(xiàng),和一個(gè)默認(rèn)選定的項(xiàng),像下面這樣(很多選擇框,不只一個(gè)):

如何解決Angularjs異步操作后臺(tái)請(qǐng)求用$q.all排列先后順序的問題

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)請(qǐng)求都獲得完,才去后臺(tái)請(qǐng)求默認(rèn)值,

就用$q.all方法

let list = $q.all({    // 多個(gè)后臺(tái)請(qǐng)求,部分先后順序
 url1: getUrl1().$promise,
 url2: getUrl2().$promise,
 url3: getUrl3().$promise,
});
$scope.list.then(function (result) {
  // 三個(gè)后臺(tái)請(qǐng)求結(jié)果
 result.url1
 result.url2
 result.url3
}).finally(function () {  // finally的優(yōu)點(diǎn):1.無論成功失敗都會(huì)執(zhí)行 2.前面三個(gè)請(qǐng)求結(jié)束后才會(huì)執(zhí)行
 // 最后一個(gè)后臺(tái)請(qǐng)求
   // TODO
});

補(bǔ)充:當(dāng)然還有then().then().then()......這種方法,就把請(qǐng)求順序執(zhí)行了,不過select眾多選項(xiàng)的后臺(tái)請(qǐng)求不需要先后順序,只是默認(rèn)項(xiàng)需要最后執(zhí)行,我就選擇$q.all這種方法了。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“如何解決Angularjs異步操作后臺(tái)請(qǐng)求用$q.all排列先后順序的問題”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI