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();
我正在尝试从多个 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();