Node.js 如何仅在执行函数后发送结果?
json()我想在post之后发送函数的结果,但我认为res.json()在我得到函数的结果之前执行,每次结果都是未定义的Node.js 如何仅在执行函数后发送结果?,node.js,mongodb,express,Node.js,Mongodb,Express,json()我想在post之后发送函数的结果,但我认为res.json()在我得到函数的结果之前执行,每次结果都是未定义的 Game.find({ $or: [{ 'homeTeamName': awayTeamName }, { 'awayTeamName': awayTeamName }] }) .then( function (games) { let gamesGuest = games
Game.find({ $or: [{ 'homeTeamName': awayTeamName }, { 'awayTeamName': awayTeamName }] })
.then(
function (games) {
let gamesGuest = games
let result = testFunc.createCoef(gamesHome, gamesGuest, homeTeamName, awayTeamName)
res.json(result)
}
)
.catch(err =>
res.status(404).json('Away no games')
)
}
)
您可以尝试使用异步等待
Game.find({ $or: [{ 'homeTeamName': awayTeamName }, { 'awayTeamName': awayTeamName }] })
.then(
async function (games) {
let gamesGuest = games
let result = await testFunc.createCoef(gamesHome, gamesGuest, homeTeamName, awayTeamName)
res.json(result)
}
)
.catch(err =>
res.status(404).json('Away no games')
)
}
)
我不是Nodejs方面的专家,我对它还是新手,但我认为对于异步执行,可以使用wait,因此它会哀求函数完成,然后移动到下一行 因此,尝试在函数之前添加“wait”
Game.find({$or:[{'homeTeamName':awayTeamName},{'awayTeamName':awayTeamName}]})
.那么(
异步函数(游戏){
让gamesGuest=游戏
让result=wait testFunc.createCoef(gamesHome、gamesGuest、homeTeamName、awayTeamName)
res.json(结果)
}
)
.catch(错误=>
res.status(404.json)(“客场无比赛”)
)
}
)
添加对testFunc.createCoef
的承诺……同时在问题中添加testFunc.createCoef
的代码。