我在典型的mvc结构中设置服务器。当模型中的函数查询我的数据库时,控制器中的函数要求我等待给定的承诺。如果查询返回一个承诺,为什么我不需要等待它?

//model - why don't I have to make this an async/ await function?
const findUser = (name) => {
  const author = User.findOne({
    where: {
      firstName: name,
    },
  });
  return author;
};

//controller
const getUser = async (ctx) => {
  ctx.body = await messages.findUser(ctx.request.body);
};

最佳答案

User.findOne()立即返回aPromise。这一承诺立即回到getUser。是什么在等待。
如果您要在getUser调用中执行User.findOne()将解析为的操作,那么您必须在getUser调用中执行await
更简单地说,getUser是一个错误的变量名。它不代表实际值。相反,它代表着价值的承诺。你可以很快得到价值的承诺。完成它们需要时间。

关于javascript - 为什么没有必要等待数据库查询的返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48571905/

10-09 23:30