注意点1:

 要想await生效,后面的异步操作必须返回一个promise(我在这里踩了坑),否则尽管该行代码是异步,await依然不会在该处停留等待异步操作完成,可以说await是依赖promise判断该异步操作是否执行结束的。

注意点2:await后的Promise异步操作里如何再接一个await而不报错

async function comment(req, res){
  await messageModel.getMessage([page]).then(result => {
    for (let i = 0; i < result.length; i++) {
      await messageModel.getCommentLength([result[i].id]).then(resp => {
      	console.log(resp
      })
    }
  })
}

在上面这个例子,在node里面运行一下就会报错提示,await只能在async方法内使用。
我想了很久,将then的成功回调函数声明async函数即可,解决了我很多问题。
以下是解决代码:

async function comment(req, res){
  await messageModel.getMessage([page]).then(async result => {
    for (let i = 0; i < result.length; i++) {
      await messageModel.getCommentLength([result[i].id]).then(resp => {
      	console.log(resp
      })
    }
  })
}
Logo

基于 Vue 的企业级 UI 组件库和中后台系统解决方案,为数万开发者服务。

更多推荐