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