簡體   English   中英

如何在Node.js中以隨機時間間隔創建隨機對象?

[英]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個回調放入事件隊列。 然后,在每個執行時,它使用存儲在randomNum1randomNum2的值。 請注意,當第一個回調開始運行時,while循環已經完成,並且randomNum1randomNum2的值不再更改。 這解釋了為什么您的代碼每次都使用相同的值。 解決方法很容易-只需在創建新對象的函數范圍內移動randomNum1randomNum2的定義, 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM