如何在Node.js中的多个文件中获取变量的当前值?

时间:2017-01-17 15:40:20

标签: javascript node.js

我在Node.js中使用了index.js文件和check.js文件。如果我的数据库中的某些值发生了变化,我会使用check.js检查每500毫秒。如果是这样,变量currentInput的值会发生变化。我想在index.js中使用这个变量currentInput,这样我得到它的当前值。我尝试过搜索,但我发现的解决方案并没有给我当前的价值。

在check.js中:

var currentInput;
.
.
.

var check = function(){
    pool.query('SELECT someValue FROM table WHERE id=1',function(err,rows){
        if(err) throw err;
        var newInput = rows[0].someValue;
        if(currentInput!=newInput){
            currentInput=newInput;
            }
        console.log('Current value:', currentInput);
    });
    setTimeout(check, 500);
}

在index.js中,我想使用它:

var x = function(currentInput);

2 个答案:

答案 0 :(得分:0)

您可以将您的功能导出为模块。然后加载它并从index.js调用。

check.js

exports.check = function() {
    pool.query('SELECT someValue FROM table WHERE id=1',function(err,rows){
        if(err) throw err;
        var newInput = rows[0].someValue;
        if(currentInput!=newInput){
            currentInput=newInput;
        }
        return currentInput);
    });  
};

index.js

var check = require("./path/to/check.js");

setTimeout(function(){
    var x = check.check;
}, 500);

答案 1 :(得分:0)

您可以使用GLOBAL变量。 GLOBAL变量是(是的,你是对的)全局变量。

例如:

//set the variable
global.currentInput = newInput;
// OR
global['currentInput'] = newInput;

//get the value
var x = global.currentInput;
// OR
var x = global['currentInput'];

请注意,这可能不是最有效的方法,人们根本不喜欢这种方式(https://stackoverflow.com/a/32483803/4413576

要在不同文件中使用全局变量,它们必须“相互连接”。

// index.js
require('./check.js')