在 Javascript 个异步函数中等待问题

Await question in Javascript async functions

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

//other code 
}

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

some().then() return 是一个新的承诺,await 等待这个新的承诺,因此它将等待 .then() 处理程序和它可能 return 在继续通过 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 而不是常数

希望这对某人有所帮助。