![](/img/trans.png)
[英]How do you use javascript to get a random result from an array over a time interval?
[英]How do you create random objects at random time intervals in Nodejs?
我想在NodeJS中創建X個隨機對象(在本示例中為100個)。 這些對象具有隨機值,另外,我希望它們在randomIntervals中創建。 為了完成此任務,我編寫了與此類似的代碼:
i=0;
while (i < 100){
randomNum1 = Math.floor(Math.random()*100);
randomNum2 = Math.floor(Math.random()*100);
randomIntervalTime = Math.floor(Math.random()*100);
timeOutInterval = setTimeout(function(){
return new SomeObject(randomNum1, randomNum2)}, randomIntervalTime);
i++;
}
問題在於該值未保留用於回調,它只會生成具有相同值(循環中最后創建的值)的100個新對象
我意識到這是因為我不完全了解回調的工作方式問題,但是我的問題是有人將如何在Nodejs中實現這一點。
原始代碼將100個回調放入事件隊列。 然后,在每個執行時,它使用存儲在randomNum1
和randomNum2
的值。 請注意,當第一個回調開始運行時,while循環已經完成,並且randomNum1
和randomNum2
的值不再更改。 這解釋了為什么您的代碼每次都使用相同的值。 解決方法很容易-只需在創建新對象的函數范圍內移動randomNum1
和randomNum2
的定義, randomNum1
randomNum2
:
var createNewObject = function() {
var randomNum1 = Math.floor(Math.random()*100);
var randomNum2 = Math.floor(Math.random()*100);
return new SomeObject(randomNum1, randomNum2);
};
var i = 0;
while (i < 100) {
var randomIntervalTime = Math.floor(Math.random()*100);
setTimeout(createNewObject, randomIntervalTime);
i++;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.