gpt4 book ai didi

javascript - Promise.all 不适用于异步内部函数

转载 作者:行者123 更新时间:2023-11-30 15:09:56 25 4
gpt4 key购买 nike

<分区>

我有一个项目(菜肴)列表,我需要从 mongodb 获取每个项目(菜肴)的所有者。我正在使用 promises 像这样执行此操作

 Dish.find({})
.limit(lim)
.sort({created : 1})
.exec()
.then(function(dishes){
if (!dishes) {
return next(new errors.ResourceNotFoundError('The resource you requested could not be found.'))
next()
}

return dishOwners.getOwners(dishes)
})
.then(function(data){
return res.send(200, data)
next()
})
.catch(function(err){
return next(new errors.InternalError(err.message))
next()
})

dishOwners.getOwners(dishes) 函数返回一个 Promise.all,它像这样获取所有菜肴

module.exports.getOwners = function(dishes){

return Promise.all(dishes.map(function(dish){
User
.findOne({_id:dish.created_by})
.then(function(user){
return {
dish: dish,
owner: user
}
})
.catch(function(err){
log.error(err.message)
})
}))
}

问题是

    return res.send(200, data)
next()

在 Promise.all 得到解决之前被调用,因此返回 null,据我所知,promise.all 的工作方式不应该是这种情况。

对 promises 很陌生,我们将不胜感激。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com