簡體   English   中英

如何在每個間隔后為變量賦值?

[英]How to assign a value to a variable after each interval?

我想運行一個重復 100 次的腳本。

每次重復都應該按順序進行

從數組或列表中獲取名稱並將它們傳遞給我的變量。 我怎樣才能做到這一點?

我創建了這個作為示例,並考慮如何在那里安裝 function。 我已經閱讀並嘗試了一些東西。 但不知何故我還沒有准備好

 var TestNames = ["test1", "test2", "test3", "test4", "test5"] var n = TestNames[0] interval = setInterval(function() { var Username = n; console.log(Username); // here is some code }, 2000); setTimeout(function() { clearInterval(interval) }, 10000);

假設setTimeout是根據名稱數量 (10000/2000) 計算的,您可以完全省略它。

 const TestNames = ["test1", "test2", "test3", "test4", "test5"]; //REM: https://developer.mozilla.org/en-US/docs/Web/API/setInterval //REM: Passing a copy of TestNames to not alter the original const interval = setInterval(function(listOfNames){ if(listOfNames.length){ //REM: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift const Username = listOfNames.shift(); console.log('Current name:', Username); console.log(TestNames.length - listOfNames.length, ' names done.'); console.log(listOfNames.length % TestNames.length, ' names left.') } else{ //REM: Cancel the interval, if listOfNames has no more items clearInterval(interval); console.log('No names left.') } }, 2000, Array.from(TestNames));

從數組或列表中獲取名稱並將它們傳遞給我的變量。 我怎樣才能做到這一點?

這取決於您的要求。

  • 你需要保留TestNames嗎?
  • 你會隨機取一個名字嗎?
  • 您只是按順序選擇下一個名字嗎?

在我的示例中,我將TestNames的副本作為listOfNames傳遞給間隔。 在每次迭代中,我使用shiftlistOfNames中刪除第一個項目,它也返回刪除的項目並將其分配給Username 如果listOfNames沒有更多項目,則清除間隔。

 const TestNames = ["test1", "test2", "test3", "test4", "test5"] let index = 0 const interval = setInterval(function() { const Username = TestNames[index]; console.log(Username); index += 1 }, 2000); setTimeout(function() { clearInterval(interval) }, 10000);

如果你想為每次迭代寫一個用戶名,我建議這樣做。 還要注意 const 和 let 的使用

 const testNames = ["test1", "test2", "test3", "test4", "test5"]; // JS arrays starts at 0 const numberOfNames = testNames.length; let counter = 0; let interval = setInterval(function() { if (counter >= numberOfNames) return; // don't continue let Username = testNames[counter]; console.log(counter,Username); counter++; // point at the next or perhaps beyond - shorthand for counter = counter + 1 or counter += 1. ++ increments // here is some code }, 2000); let tId = setTimeout(function() { clearInterval(interval) }, 10000);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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