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

学习代码大师

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

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
丹尼斯·塞古瑞特(DenysSéguret)

您的问题是您不等待回调执行。

代替

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
            });
        }
    });
});

请注意,存在一些构造,尤其是promise,它们使链接异步调用更加容易。但是,您必须首先了解该问题,并了解如何使用回调来处理它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使局部变量(在函数内部)成为全局变量

如何使局部变量(在函数内部)成为全局变量

R中的全局变量和局部变量

C:同名的全局变量和局部变量

C ++中的全局变量和局部变量

Python类中的全局变量和局部变量

分配与全局变量同名的局部变量时出错

当已经存在相同名称的全局变量和局部变量时,如何访问变量(C ++)?

全局变量和局部变量之间的差异

Python混合全局变量和局部变量?

如何在C中将全局变量更改为局部变量?

事件处理函数上的全局变量和局部变量

全局和局部变量分配

局部变量和全局变量

声明数组指针时,全局变量和局部变量有什么区别?

全局和局部变量JavaScript

类变量,成员变量和局部变量,全局变量之间的区别

全局和局部变量

当函数具有同义局部变量时,如何在函数中获取全局变量?

如何在python中的字符串中插入全局变量和局部变量

如何在不更改全局变量的情况下更改分配给全局变量值的局部变量?

更改全局和局部变量

从全局变量节点js分配局部变量

如何使用局部变量更改全局变量

Kotlin - 局部变量与全局变量

不同子程序中全局变量和局部变量的使用

Python 全局和局部变量:代码是如何工作的?

Javascript - 在已声明的全局变量中分配新值后定义局部变量会覆盖全局变量。为什么?

如何创建动态全局和局部变量?