Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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 其他js文件上的异步函数总是返回未定义的,但函数运行_Javascript_Node.js_Ejs - Fatal编程技术网

Javascript 其他js文件上的异步函数总是返回未定义的,但函数运行

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)

我有一个异步函数,它在js文件上返回1或0值,这就是代码

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()
表示“失败”