【问题标题】:Why is it not necessary to await the return of a database query为什么不需要等待数据库查询的返回
【发布时间】:2018-07-12 07:38:43
【问题描述】:

我在典型的 MVC 结构中设置了我的服务器。控制器中的函数要求我等待模型中的函数查询我的数据库时给出的承诺。如果查询返回一个promise,我怎么不需要等待呢?

//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);
};

【问题讨论】:

    标签: javascript c# asp.net-mvc database async-await


    【解决方案1】:

    User.findOne() 立即返回Promise。该承诺立即返回给getUsergetUser 是什么在等待。

    如果您要对User.findOne()getUser 调用中解析的内容进行任何操作那么您必须在@987654328 中使用await @。

    更简单地说,author 是一个错误的变量名。它不代表实际值。相反,它代表了价值的承诺。您可以快速获得价值承诺。实现它们需要时间。

    【讨论】:

      【解决方案2】:

      promise 是一个值的抽象,其语义要么该值最终可用(“已解决”的 promise),要么最终确定该值不会被检索(“rejected”promise)。

      值或错误分别可通过 promise 的 then 方法的参数获得,这些参数本身就是函数,其参数分别是值或错误;这些函数定义了当值可用时如何处理它。

      另一方面,封装承诺立即可用,因此您无需等待。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-08-28
        • 2022-01-16
        • 2021-10-06
        • 2013-01-11
        • 2022-01-21
        • 1970-01-01
        相关资源
        最近更新 更多