怎么理解async当中有多个await

下面代码会报错,因为 await 用在普通函数之中了。但是,如果将 forEach 方法的参数改成 async 函数,也有问题。但是为什么呢?帮忙看下

    async function dbFuc(db) {
      let docs = [{}, {}, {}];
    
      // 可能得到错误结果
      docs.forEach(async function (doc) {
        await db.post(doc);
      });
    }
    
    下面写法就正确,又是为什么呢
    
    async function dbFuc(db) {
      let docs = [{}, {}, {}];
    
      for (let doc of docs) {
        await db.post(doc);
      }
    }
阅读 8.1k
2 个回答

forEach相当于是并发处理。
这里你所说的错误结果,例如顺序不一致?

await 是让 该函数内,后续语句等待异步操作结束后再执行
而你第一种写法, await 是在函数中的函数,后面没有任何语句。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题