javascript - 控制另一个文件中的异步函数

标签 javascript mongodb mongoose

我正在调用一个名为 feedFactory 的文件中的另一个函数,该函数有一个异步调用 School.findOne,它返回一个 promise 。因此,以下 get postFields 值为 null,因为它不会等待。如何从调用函数 feedFactory.BuildPostBody 的文件中控制异步流程?

const postFields = feedFactory.BuildPostBody(req, res, errorResponse);

文件中的 feedFactory 我有以下代码块,在执行查询后返回一个 promise 。

      exports = module.exports = {
  BuildPostBody: (req, res, errorResponse) => {
    //Determine what account type we are going to post as using field
    //postToFeedAs
    let postFields;

      case "School":
        {
          //Get industry partner name and company logo
          School.findOne({ _id: req.user.school }).then(school => {
              let avatar =
                "https://image.png";
              if (typeof school.profile.school_logo !== "undefined") {
                avatar = school.profile.school_logo.url;
              }

                  postFields = {
                    author: {
                      userType: req.body.postToFeedAs,
                      user: req.user.school,
                      name: school.name,
                      avatar: avatar
                    },
                    postType: "text",
                    postBody: req.body.postBody
                  };
                  console.log("returning post back from factory");
                  return postFields; <--Returns late 

              ...

最佳答案

您可以使用 Async/await 来实现您的目标:

将此代码放入 async 函数中并更改为:

const postFields =等待 feedFactory.BuildPostBody(...)

然后使用postFields时执行

postFields.then(...)

关于javascript - 控制另一个文件中的异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56398392/

相关文章:

python - 使用 Flask 和 Flask-MongoAlchemy 时的 WTForms 语法

javascript - 将 CSV 文件上传到 MySQL 数据库(错误)

javascript - 我怎样才能使用socket.io(而不是每个人)向单个客户端发出信号

javascript - km0ae9gr6m js注入(inject)破解信息

mongodb - Mongoose 查询字段不包含子字符串

node.js - Mongoose 中的 findOne 子文档

javascript - Node 脚本永远不会结束

javascript - Handlebars.js 自定义函数排序

ruby-on-rails - 从 excel 文件定期更新数据集的策略

javascript - 如何访问嵌套 mongodb 对象中的值?