从node.js中的模块获取“随机”值

时间:2016-09-26 11:11:28

标签: javascript node.js require

假设我有一个看起来像这样的文件:

var random_nr = Math.floor(Math.random()*array.length);
var x = array[random_nr];
// do some things

exports.random_array_member = x

现在,如果我在另一个文件中'需要'这个,只要我不重新启动服务器,我就会得到相同的结果,大概是因为缓存?

运行此代码并获取随机值的最佳方法是什么,而不将代码包含在我的主文件中?

2 个答案:

答案 0 :(得分:2)

您显示的代码仅执行一次。然后将该代码的结果存储为变量,准备导出到任何需要它的文件。

相反,你需要"打电话"您需要随机变量时的代码:

exports.random_array_member = function(){
    var random_nr = Math.floor(Math.random()*array.length);
    return array[random_nr];
}

现在,您无需访问exports.random_array_member,而是在其他文件中调用exports.random_array_member()

答案 1 :(得分:1)

让我们玩getters

<强> random.js

var array = [1, 2, 3, 4, 5];

module.exports = {
  get random_array_member() {
    return array[Math.floor(Math.random()*array.length)]
  }
}

<强> consumer.js

var r = require('./random')

console.log(r.random_array_member)
console.log(r.random_array_member)
console.log(r.random_array_member)