async/await 不等待 async.map 调用完成



在我的 Node.js 应用程序中,我正在尝试使用辅助函数来收集和格式化一些数据,以便最终通过 API 端点返回。我需要遍历一个数组,并为每个条目对我的数据库进行异步调用。但是,一旦我映射了这个新的数据数组,我就无法在我的路线中返回它。我相信这与"async.map"的性质有关,但无法从文档中弄清楚。我错过了什么吗?更好的方法?

router.get('/route',async (req,res) => {
const formattedData = await module.formatData(data);
// formattedData IS RETURNED AS UNDEFINED HERE
res.json({data:formattedData});
};

相关辅助函数:

formatData: async(data) => {
// gets entire object from the id that I originally had
getNewData: (dataID) => {
const data = Data.find({_id:dataID},(error,response)=>{
return response;
})
return data;
},
const formatDataHelper = async(data,done) =>{
// THIS function queries database (reason I have to use async)
const newData = await getNewData(data);
done(null, newData);
}
function dataMap(data, callback) {
async.map(data, formatDataHelper, callback);
}
const returnData = await dataMap(data,(err,response)=>{
return response;
})
return returnData;
},

await仅在您await返回链接到您想要await的任何内容的承诺的函数时才等待某些内容。 您的dataMap()函数不返回任何内容,因此该函数上的await不会等待任何内容。

因此,为了使用await,您的dataMap()函数需要返回一个与它正在执行的异步操作相关联的承诺。

最新更新