>我在一个名为feedFactory
的文件中调用另一个函数,该函数有一个异步调用,School.findOne
,返回一个承诺。因此,以下 get postFields
值为 null,因为它不会等待。如何从调用函数feedFactory.BuildPostBody
的文件控制异步流?
const postFields = feedFactory.BuildPostBody(req, res, errorResponse);
而在文件中 feedFactory
我有以下代码块,在我执行查询后返回一个承诺。
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 = await feedFactory.BuildPostBody(...)
然后当使用postFields
做
postFields.then(...)