簡體   English   中英

在角度6中使用toPromise的正確方法

[英]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.

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