Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法解析Nodejs Express中的承诺_Javascript - Fatal编程技术网

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
是一个异步函数)。你需要等待。你不能让它立即实现