Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.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
Node.js 如何在节点js中分配全局和局部变量_Node.js_Httprequest_Local_Json Web Token - Fatal编程技术网

Node.js 如何在节点js中分配全局和局部变量

Node.js 如何在节点js中分配全局和局部变量,node.js,httprequest,local,json-web-token,Node.js,Httprequest,Local,Json Web Token,如果我声明一个变量并从一个方法赋值,然后在方法外打印。但它显示为未定义。 我的密码是 var value; var getValue = function getValue(){ value = 5; }; console.log(value); 产出 undefined 我也在尝试全局变量 var getValue = function getValue(){ global.value = 5; }; console.log(value); 但也有一些失误, conso

如果我声明一个变量并从一个方法赋值,然后在方法外打印。但它显示为未定义。 我的密码是

var value;
var getValue = function getValue(){
    value = 5;
};
console.log(value); 
产出

undefined
我也在尝试全局变量

var getValue = function getValue(){
    global.value = 5;
};
console.log(value);
但也有一些失误,

console.log(value);
            ^

ReferenceError: value is not defined
    at Object.<anonymous> (~/MyApp/test.js:8:13)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Function.Module.runMain (module.js:447:10)
    at startup (node.js:146:18)
    at node.js:404:3
console.log(值);
^
ReferenceError:未定义值
反对。(~/MyApp/test.js:8:13)
在模块处编译(Module.js:413:34)
在Object.Module._extensions..js(Module.js:422:10)
在Module.load(Module.js:357:32)
在Function.Module.\u加载(Module.js:314:12)
位于Function.Module.runMain(Module.js:447:10)
启动时(node.js:146:18)
在node.js:404:3

您的函数未运行,因此未设置值

var value;
var getValue = function getValue(){
    value = 5;
};
getValue(); // call function to set value of 'value'

console.log(value); 

在第一个示例中,在函数中设置了值,但从未调用该函数。因此,该值是未定义的

在全局示例中,从未声明值,因此未定义值

您要做的是调用getValue(),然后将您的值输出到控制台

第一个例子:

var value;
var getValue = function(){
    value = 5;
};
getValue();
console.log(value); // should return 5
全球示例:

var global = {}; // create an object otherwise you get a 'global is not defined' error
var getValue = function getValue(){
    global.value = 5;
};
getValue();
console.log(global.value); // should return 5

您的问题是没有等待回调执行

而不是

app.post('/authenticate', function(req, res) {
    var userToken;
    ...
    amqHandler.reciveData(amqpConnection ,function(err,data){
        if(!err){
            httpRequestHandler. makeHttpRequest(data, function(err,userToken){
                global.apiResponce = JSON.parse(userToken).token;
                global.convertedObjects = JSON.stringify(apiResponce);
                console.log("convertedObjects==>"+convertedObjects);
                userToken = {token:JSON.stringify(apiResponce)};
            });
        }
    });
    res.send({msg:userToken}); // this is executed before the end of reciveData
});
必须从传递给异步函数的回调发送响应:

app.post('/authenticate', function(req, res) {
    ...
    amqHandler.reciveData(amqpConnection ,function(err,data){
        if(!err){
            httpRequestHandler. makeHttpRequest(data, function(err,userToken){
                global.apiResponce = JSON.parse(userToken).token;
                global.convertedObjects = JSON.stringify(apiResponce);
                console.log("convertedObjects==>"+convertedObjects);
                var userToken = {token:JSON.stringify(apiResponce)};
                res.send({msg:userToken}); // <=== send here
            });
        }
    });
});
app.post('/authenticate',函数(req,res){
...
接收数据(amqpConnection,函数(err,data){
如果(!err){
makeHttpRequest(数据,函数(err,userToken){
global.apirespone=JSON.parse(userToken.token);
global.convertedObjects=JSON.stringify(apireponse);
log(“convertedObjects==>”+convertedObjects);
var userToken={token:JSON.stringify(apireponse)};

res.send({msg:userToken});//好的,您必须调用函数来设置值。我的场景是,在该方法中有http post调用并获得一些响应。我需要将该值保存在本地,并且我可以实现此逻辑吗?如果我调用了一个方法,则会有一个请求转到该post。我的场景是,在该方法中有http post调用并获得一些响应d将该值保存在本地,我是否可以使用此逻辑。?如果我调用了一个方法,则会有一个请求转到该post。本地相对于函数?抱歉,我不确定我是否遵循了此逻辑