等待 Javascript 异步函数中的问题

Shi*_*aru 0 javascript async-await es6-promise

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

//other code 
}
Run Code Online (Sandbox Code Playgroud)

"await" 是只等待 some() 还是等待 some() 及其 then(),然后再转到 //other 代码?基本上问题是,在转到下一个语句之前,等待是否也在 then 部分完成。

jfr*_*d00 6

some().then()返回一个新的 Promise 并await等待这个新的 Promise,所以它会等待.then()处理程序和它可能返回的任何 Promise ,然后再经过await. 换句话说,它等待整个承诺链。


一般来说,这不是很好的混合风格,await并且.then()与您通常想要坚持的相同语句await而不是.then()如下所示:

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

    //other code 
}
Run Code Online (Sandbox Code Playgroud)

这为您提供了更简单的外观和更有序的代码设计await