我对JS还是陌生的,我想理解this.myProvider.login().subscribe(response => {
if (response.status == 403) {
this.loading.dismiss();
console.log("Access denied");
}
this.loading.dismiss();
this.nav.setRoot('MainPage');
},
error => {
this.loading.dismiss();
console.log(error);
});
我在网上浏览了这篇了不起的文章,他们在concluded explaining此代码段
Async and Await
现在基于以上文章,我能够得出一些结论,并希望有人能验证它是否正确。
要使用function doubleAfter2Seconds(x) {
return new Promise(resolve => {
setTimeout(() => {
resolve(x * 2);
}, 2000);
});
}
async function addAsync(x) {
const a = await doubleAfter2Seconds(10);
const b = await doubleAfter2Seconds(20);
const c = await doubleAfter2Seconds(30);
return x + a + b + c;
}
addAsync(10).then((sum) => {
console.log(sum);
});
,我们需要将其嵌套在await
函数下吗?
异步解决链接问题?但是Async
呢?那么什么使异步唯一/更好呢?
答案 0 :(得分:1)
要使用await,我们需要将其嵌套在Async函数下吗?
是的,await
关键字仅在async
函数中可用
异步解决了链接问题?
它使代码看起来更简单
但是Promise.all也是如此吗?
您仍然可以将其与await
一起使用,例如:
async function addAsync(x) {
const [a, b, c] = await Promise.all([
doubleAfter2Seconds(10),
doubleAfter2Seconds(20),
doubleAfter2Seconds(30)
]);
return x + a + b + c;
}
在这种情况下,Promise.all
中的所有promise都将被并行解决,并且您将在2秒内获得结果,而不是6秒。
答案 1 :(得分:1)
Promise.all等待并行处理每个promise,另一方面又等待一个接一个地完成,也就是说,如果您有许多不同的功能,而每个功能都严重依赖于前一个的值,则无法使用Promise.all在这种情况下。