nodeJS中的持久变量

时间:2012-06-25 23:17:24

标签: javascript node.js

我正在编写一个节点应用程序,需要记住createServer()回调的连接迭代中的数据。有没有一种简单的方法不涉及数据库或文件r / w?我试图在各个模块甚至主脚本中创建对象,同时将它们传递给各种响应处理程序,但是对于每个连接,它们都会被刷新。

我的意思是:

require('http').createServer(function(req,res){
        route(req,res,object);
}).listen(cp=80);

object={variable:0}

function route(req,res,object){
    res.end();
    console.log(object.variable);
    object.variable=Math.floor(Math.random()*100);
}
在这种情况下,

console.log毫不奇怪地抛出0每个连接。有没有办法创建全局变量,而不是跨模块可用,但与var不一样持久?

1 个答案:

答案 0 :(得分:4)

Node中的每个模块都有自己的范围,所以不,var Foo;不会创建全局变量Foo。从模块内部使用global对象。

<强>更新

require('http').createServer(function(req,res){
        route(req,res,object);
}).listen(cp=8080);

object={variable:0}
global.foo = 'Bar'; // I added this

function route(req,res,object){
    res.end();
    console.log(object.variable);
    console.log("foo = %s", global.foo); // I added this too
    object.variable=Math.floor(Math.random()*100);
}

它也会按预期记录“foo = Bar”。