我是Node.js的新手,我想知道一些事情。我使用express和socket.io。有一些价值应该是可以改变的,让我们说这个' flag'具有布尔类型变量 - 默认情况下为'false'
。
但有些时候,尤其是当我点击某个按钮时,它会更改为'true'
。 express和socket.io工作流很好,但我不知道如何修改不同文件中的变量而不仅仅是复制它。
请参阅以下代码以了解
Main.js
var flag = false;
exports.flag = flag;
// display flag every second
setInterval((function(){console.log(flag)}), 1000);
remote.js中
// I want to change 'original flag' at main.js in remote.js
// How can I do that? I think below is just copying it, so doesn't effect to main.js
flag = require('/Main').flag;
// the flag will be 'true' after some moment
flag = true;
我想在main.js预期的结果
false
false
false
...
true
true
我该怎么做?
答案 0 :(得分:2)
您是否尝试过使用包含的对象而不是属性?
这样就可以保留对象的引用而不是原始值。
main = require('/Main');
main.flag = true;
编辑: 正如Mike C的评论中所述,您还需要使用setInterval
中的对象setInterval((function(){console.log(exports.flag)}), 1000);
它有效,因为Object
是一种引用类型,与原始的string
或boolean
相比较。
答案 1 :(得分:1)
您可以定义全局变量,并在任何地方访问或更改它。
<强> main.js 强>
global.flag = false;
// display flag every second
setInterval((function(){console.log(global.flag)}), 1000);
<强> remote.js中强>
// the flag will be 'true' after some moment
global.flag = true;