JavaScript等待if语句中的异步函数[duplicate]

这个问题在这里已经有答案了
如何从异步调用返回响应

(42个答案)

三年前关闭的

在if语句中有一个函数

isLoggedin()具有异步调用

路由器.get(’/’,函数(req,res,next){
if(req.isLoggedin()){<-从不返回true
console.log(’Authenticated!’);
}否则{
console.log(“未经验证”);
}
});

如何在此if语句中等待isLoggedin()

这是我的isLoggedin函数,我在其中使用passport

应用程序使用(功能(请求、恢复、下一步){
req.isLoggedin=()=&gt{
//本地护照
if(req.isAuthenticated())返回true;
//http承载
passport.authenticate(’bearer-login’,(err,user)=&gt{
如果(错误)抛出错误;
如果(!user)返回false;
返回true;
})(请求、回复);
};
next();
});

我在这里的游戏代码中使用async/await来完成这项工作

假设req.isLoggedIn()返回一个布尔值,其简单如下:

const isLoggedIn=wait req.isLoggedIn();
如果(isLoggedIn){
//做登录的事情
}

或将其简写为:

if(等待请求isLoggedIn()){
//做事
} 

但是,请确保在异步函数中包含该函数

发表评论