Javascript 无法解析Nodejs Express中的承诺
我有一份书面报告如下:-Javascript 无法解析Nodejs Express中的承诺,javascript,Javascript,我有一份书面报告如下:- const verifiedTokenPromise = token=> new Promise((resolve, reject)=>{ jwt.verify(token,publicCertFile,(err, payload)=>{ if(err){ reject(err); }else{ resolve(payload); } }); }); 然后,我试图通过使用导出函数来实现这个承诺
const verifiedTokenPromise = token=> new Promise((resolve, reject)=>{
jwt.verify(token,publicCertFile,(err, payload)=>{
if(err){
reject(err);
}else{
resolve(payload);
}
});
});
然后,我试图通过使用导出函数来实现这个承诺
exports.verifyUserRequest = (token)=>{
if(!token){
return false;
}else{
async function tokenResolver(token){
try{
var payload = await verifiedTokenPromise(token);
console.log((payload));
return true;
}catch(e){
return false;
}
}
var demo3 = tokenResolver(token);
return demo3;
}
}
当我回报承诺时,这是未定义的
exports.isTokenValid = (req, res)=>{
if(!req.headers['x-api-key']){
res.status(422).json('No token provided');
}else{
confirmation = JWTCertifier.verifyUserRequest(req.headers['x-api-key']);
console.log("sdjfnsjdnfjsdf"+ " "+confirmation);
if(confirmation == true){
res.status(200).json('Valid token');
}else{
res.status(401).json('Invalid token');
}
}
}
这里的确认是未定义的
exports.isTokenValid = async (req, res)=>{
if(!req.headers['x-api-key']){
res.status(422).json('No token provided');
}else{
confirmation = await JWTCertifier.verifyUserRequest(req.headers['x-api-key']);
console.log("sdjfnsjdnfjsdf"+ " "+confirmation);
if(confirmation == true){
res.status(200).json('Valid token');
}else{
res.status(401).json('Invalid token');
}
}
}
只需使用
wait JWTCertifier.verifyUserRequest(req.headers['x-api-key'])代码>而不是JWTCertifier.verifyUserRequest(请求头['x-api-key'])代码>。这是返回的promise
tokenResolver
是一个async
函数,而async
函数总是返回一个promise
,因此您必须等待该承诺得到解决。确认
应该是一个未解决的承诺。我不知道如何从中获得undefined
。verifyUserRequest是一个库函数,用于检查是否验证用户令牌。IsTokenValid是一个调用库函数的Express控制器。好的,我得到一个未解析的Promise对象作为确认。如何解决这个问题?demo3
是一个承诺(而且需要承诺,因为verify
是一个异步函数)。你需要等待。你不能让它立即实现