Javascript等待async for Each循环



我根据用户输入创建MongoDB记录,然后对于每个创建的新对象,我将对象ID推送到一个数组中。我的问题是最后一行的console.log语句返回空。所以我怎么能等待forEach执行结束,这样我就有了更新的资产数组,任何帮助都将不胜感激!这是我的代码:

let assetsArray = [];
if (assets) {
JSON.parse(assets).forEach(asset => {
Image.create({
organization: organizationID,
imageName: asset.imageName,
imageDescription: asset.imageDescription ?? null,
imagePath: asset.imagePath
}).then(record => {
console.log(record)
assetsArray.push(record._id)
})
})
}
console.log(assetsArray)

您可以将Promise.all用于您的案例

const tasks = JSON.parse(assets).map(asset => {
return Image.create({
organization: organizationID,
imageName: asset.imageName,
imageDescription: asset.imageDescription ?? null,
imagePath: asset.imagePath,
})
});
Promise.all(tasks).then((records) => {
return records.map(record => {
console.log(record)
return record._id
})
}).then(assetsArray => {
console.log(assetsArray)
})

最新更新