【发布时间】:2021-02-20 02:50:27
【问题描述】:
我有这两个函数,我希望 alreadyInGame 返回一个布尔值,但返回一个 Pending 承诺,如果我在异步代码上使用 await,为什么它是一个 async 函数
lobby = async function(req,res){
var game_id = req.params.game_id;
var game = await Game.findById(game_id);
//console.log('already', !alreadyInGame(req.user._id, game_id, game.users));
var exists = alreadyInGame(req.user._id, game_id, game.users);
if( !exists){
console.log('already');
game.users.push({
user: req.user,
calification: 0
});
game.save();
}
res.render('game/lobby.twig', {
username: req.user.username
});
}
async function alreadyInGame(user_id, game_id ,users){
var result = await Game.findById(game_id).find({
users: {
$elemMatch: { user: user_id }
}
});
return result.length != 0;
}
【问题讨论】:
-
作为
async函数意味着它确实返回了一个promise,因为它执行异步操作。使用await不会使任何东西同步。
标签: javascript node.js mongoose async-await