我编写了以下异步node.js函数,该函数通过Mongoose访问我的数据库,因此是一个异步函数):
function getWindSpeed(householdID){
return new Promise(async function (resolve,_){
const household = await Household.findById(householdID)
resolve(stoch.norm(household.windSimulation.mu,household.windSimulation.sigma,1))
})
}
另一方面,我具有以下函数,该函数也是异步的,因为它们都访问数据库并为数据库中的每个元素使用上一个函数:
async function getMeanWindSpeed() {
return new Promise(async function (resolve,reject){
let numberOfHouseholds = 0
let averageWind = 0.0
console.log('Begin')
await Household.find({},async function (error,households) {
if(error){
reject(error)
}else{
numberOfHouseholds = households.length
for(let i = 0; i < households.length; i++){
const speed = await wind.getWindSpeed(households[i].id)
console.log(speed)
averageWind += speed
}
}
})
averageWind = averageWind / numberOfHouseholds
console.log('Finish')
resolve(averageWind)
})
}
如您所见,我遍历了集合中的所有元素并应用了getWindSpeed()
函数,但是它并不等待其完成,因为我基于{{1} }调试消息:
console.log(...)
一些可能是usefuk的信息:
- 我正在等待另一个异步函数中的
Begin Finish 12.2322 23.1123 (more speeds) ...
的结果 - 我试图为数据库中的每个元素返回一个硬编码值(而不是调用
getMeanWindSpeed()
,并且它工作正常,所以我想问题出在那个函数中。)
预先感谢