从nodejs中的第二个函数中获取结果

Get result from second function in nodejs

本文关键字:获取 结果 函数 nodejs 第二个      更新时间:2023-09-26

编写node-js脚本,然后出现下一个问题。如何从clientSession函数获得结果

var User = function() {}
User.prototype.get_current_user = function (cookie) {
    var cookieManager = new co.cookie(cookie);
    var clientSession = new redis.createClient();
    var respons=clientSession.get("sessions/"+cookieManager.get("PHPSESSID"), function(error, result) {
        try {
            if(result != null){
                var session=JSON.parse(result);
                if(session.current_user_ID>=1) {
                    return session.current_user_ID;
                }
            } else {
                return "session does not exist";
            }
        } catch (error) {
            return "error : "+error;
        }
    });
    return respons;
}
module.exports = new User();

函数调用

var User=require('user');
var user_data=User.get_current_user(ws.upgradeReq.headers["cookie"]);
console.log(user_data); // return null. Null it's wrong answer :)

谁有什么想法?

从我所看到的get_current_user是一个异步函数。因此,如果您想要current_user_ID,您将需要传入一个用作回调的函数。

User.prototype.get_current_user = function (cookie, callback) {
    var cookieManager = new co.cookie(cookie);
    var clientSession = new redis.createClient();
    clientSession.get("sessions/"+cookieManager.get("PHPSESSID"), function(error, result) {
        try {
            if(result != null){
                var session=JSON.parse(result);
                if(session.current_user_ID>=1) {
                    callback(null, session.current_user_ID);
                }
            } else {
                callback("session does not exist");
            }
        } catch (error) {
            callback("error : "+error);
        }
    });
}

然后将其用作

User.get_current_user(ws.upgradeReq.headers["cookie"], function(err, userId) {
  if(!err) {
    console.log(userId);
  }
});