2016-09-26 12 views
0

比方說,我有一個看起來像這樣的文件:從模塊中的node.js得到一個「隨機」值

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

exports.random_array_member = x 

現在,如果我要求'這在另一個文件中,我總是會得到只要我不重啓我的服務器,大概是因爲緩存的結果相同?

什麼是運行此代碼並得到一個隨機值,而不包括代碼到我的主文件中的最佳方式?

+0

把它放在/從功能關閉返回,並調用函數你的外部文件 – rambossa

回答

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()

+0

@degr:數組不是問題。問題是,當服務器啓動時,OP的代碼被執行,_once_和一個隨機數組條目被存儲到'random_array_member'。但是,每次訪問'random_array_member'時都需要隨機輸入。 – Cerbrus

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)