angular中toPromise的正确使用方法 6

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

听起来你可能想看看这个,你可以整理一组承诺,并且基本上可以 "await" 在对值采取行动之前完成所有承诺。

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();