Javascript 其他js文件上的异步函数总是返回未定义的,但函数运行
我有一个异步函数,它在js文件上返回1或0值,这就是代码Javascript 其他js文件上的异步函数总是返回未定义的,但函数运行,javascript,node.js,ejs,Javascript,Node.js,Ejs,我有一个异步函数,它在js文件上返回1或0值,这就是代码 checkAuthentication: async function (client) { //search redis //get value key "token" try{ var tempValue, tempErr client.get("token", async (err, value)
checkAuthentication: async function (client) {
//search redis
//get value key "token"
try{
var tempValue, tempErr
client.get("token", async (err, value) => {
tempValue = value
tempErr = err
if (tempErr) { // kalo gk ada di redis
console.log(tempErr)
return 0
}
if (tempValue !== null) {//ADA DI REDIS
var start = new Date()
var responseRedis = JSON.parse(tempValue)
// console.log('this is old data' + responseRedis.accessToken)
var end = (new Date() - start)
console.info('Execution time: %d ms', end)
jwt.verify(responseRedis.accessToken, accessTokenSecret, function (err, decoded) {//check if token expired or not
if (err) {//TOKEN EXPIRED
console.log(err)
return 0
} else {//TOKEN TIDAK EXPIRED
//tuker token jd refreshesh token
const newRefreshToken = jwt.sign({ username: decoded.user_name }, accessTokenSecret, { expiresIn: '24h' });
var data_send_redis = JSON.stringify({
"accessToken": newRefreshToken,
});
//store to redis
// console.log('this is new data' + data_send_redis)
client.setex("token", 600, data_send_redis);
return 1
}
});
} else { //GK ADA DI REDIS TOKENYA
//LOG OUT
console.log('token not found')
return 0
}
})
}catch (err){
console.log(err)
return 0
}
}
另一方面,我试图在其他js文件中获取名为a的变量中的值
var a = await model_auth_token.checkAuthentication(client)
console.log('hasil check auth : return ' + a)
if(a == 0){
client.del('token', function(err, response) {
if (response == 1) {
console.log("Deleted Successfully!")
} else{
console.log("Fail to Delete")
console.log(err)
}
});
res.redirect('/panel/panel_login')
return
}
每当我执行此操作时,控制台日志结果总是显示未定义,我已经在函数上添加了wait或then,但控制台日志结果总是显示未定义的您正在从.then或.catch回调返回,这是一个函数 您需要在承诺中包装client.get块:
返回新承诺((解析,拒绝)=>{…});
然后,使用resolve()
表示“成功”,使用reject()
表示“失败”