我写的是以下内容:-
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');
}
}
}
这里的确认信息是不确定的
答案 0 :(得分:1)
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');
}
}
}
只需使用await JWTCertifier.verifyUserRequest(req.headers['x-api-key']);
而不是JWTCertifier.verifyUserRequest(req.headers['x-api-key']);
。这将返回promise
答案 1 :(得分:0)
tokenResolver
是一个async
函数,而async
函数始终返回一个Promise
,因此您必须等待该承诺解决。