Javascript异步函数中的Await问题


async abc(){
await some().then(() => {
//do inside then
});
//other code 
}

"wait"是只在some((上等待,还是在转到//其他代码之前等待some(和它的then((?基本上,问题是在进入下一个语句之前,是否也在等待完成这一部分。

some().then()返回一个新的promise,而await等待该新promise,因此它将等待.then()处理程序和它可能返回的任何promise,然后再通过await。换句话说,它在等待整个承诺链。


通常,在同一语句中混合await.then()不是一种好的风格,因为您通常希望使用await而不是.then(),如:

async abc(){
let result = await some();
// do something with result
//other code 
}

这为您提供了await所支持的外观更简单、更有序的代码设计。

您也可以使用箭头函数来实现这一点。

const some = () => 'something';
const abs = async () => {
const result_from_some = await some();
// do something with result_from_some
}

但请注意,如果">result_from_some"中的值可能发生更改,则最好使用let而不是const

希望这能帮助到别人。

最新更新