2016-01-08 70 views
1

我是Node.js中的新成員,我在想什麼。我使用express和socket.io。有一些值應該是可以改變的,比如說這個具有布爾類型變量的'標誌' - 默認爲'false'Node.js修改來自不同文件的變量

但有的時候特別是當我點擊一些按鈕,它會改變'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 

我怎麼能這樣做?

回答

2

您是否嘗試過使用包含的對象,而不是財產?

您保留對象的引用,而不是原始值的方式。

main = require('/Main'); 

main.flag = true; 

編輯: 作爲由Mike C中評論說,你還需要使用對象中的setInterval

setInterval((function(){console.log(exports.flag)}), 1000); 

它的工作原理,因爲Object是引用類型,相比stringboolean這是原始的。

+1

他們也不得不改變'main.js'代碼使用'exports.flag'在'setInterval'。 –

+0

它運作良好。我需要學習更多。謝謝 ! – Juntae

+0

增加更多細節:) – RPDeshaies

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; 
+0

也謝謝你,也許這是簡單的方法。 – Juntae