[英]The right way to use toPromise in angular 6
我正在嘗試從多個http請求中檢索數據,我決定避免使用嵌套的subscribe()。 我只想用異步等待樣式編寫代碼。
const diagnostics = this.http.get(url, {params: params}).toPromise()
console.log(diagnostics);
但我明白了:
// ZoneAwarePromise {__zone_symbol__state: null, __zone_symbol__value: Array(0)}
我不知道如何處理提取數據。
有沒有辦法避免像回調一樣?
.then(res => {}).catch()
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all
聽起來你可能想看看這個,你可以整理一系列的承諾,並且在對所有承諾執行之前基本上可以“等待”它們完成。
myPromiseArray.push(this.http.get(url, {params: params}).toPromise()) Promise.all(myPromiseArray).then(alltheValuesInAnArray => {})
正如您所注意到的, .toPromise
方法的結果是Promise對象。 為了使用async / await樣式,首先需要使用異步函數包裝代碼,方法是在函數前加上async
關鍵字,然后使用await
關鍵字告訴代碼等待異步操作。 在你的情況下它是http請求。
async function run(){
try{
const diagnostics = await (this.http.get(url, {params: params}).toPromise());
// wait for asynchronous request
console.log(diagnostics);
} catch(err){
// request failed
console.error(err);
}
}
run();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.