簡體   English   中英

如何在 angularjs 中使用 $q.all(promises)

[英]How do I use $q.all(promises) in angularjs

通常我會做

$http({
    method:'GET',
    url: 'exmapleURL',
    params: {someParams}
}).then(function(response) {
    console.log(response); // response contains data I need
});

現在我有多個這樣的調用要運行,我想等它們都完成后再對它們的響應做一些事情,而 $q.all() 似乎是一個很好的起點。

根據AngularJS $q 服務 API 參考 - $q.all文檔,

全部(承諾)

將多個 Promise 組合成一個 promise,當所有輸入 Promise 都被解析時,它就會被解析。

返回:返回單個 promise ,該 promise 將使用值數組/哈希值解析,每個值對應於承諾數組/哈希中相同索引/鍵處的 promise。 如果任何一個 Promise 以拒絕的方式解決,則生成的 promise 將以相同的拒絕值被拒絕。

這是否意味着如果我傳入一個請求數組(如 $q.all(calls).then(response)),返回的 Promise 在數組中的順序與傳入調用的順序相同 我可以執行類似response[0]的操作來檢索第 0 次調用返回的響應數據嗎? 謝謝你。

這是否意味着如果我傳入一個請求數組(如 $q.all(calls).then(response)),返回的 Promise 在數組中的順序與傳入調用的順序相同? 我可以執行類似 response[0] 的操作來檢索第 0 次調用返回的響應數據嗎?

是的,數組中的結果以相同的順序返回:

 angular.module("app",[]).run(function($q) { var promise99 = $q.when(99); var promise22 = $q.when(22); $q.all([promise22,promise99]).then(function([result22,result99]) { console.log(result22); console.log(result99); }); });
 <script src="//unpkg.com/angular/angular.js"></script> <body ng-app="app"></body>

$q.all也接受哈希

 angular.module("app",[]).run(function($q) { var promise99 = $q.when(99); var promise22 = $q.when(22); var promiseHash = { r99: promise99, r22: promise22 }; $q.all(promiseHash).then(function(resultHash) { console.log(resultHash.r22); console.log(resultHash.r99); }); });
 <script src="//unpkg.com/angular/angular.js"></script> <body ng-app="app"></body>

有關詳細信息,請參閱

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM