簡體   English   中英

setTimeout在for循環內具有隨機值

[英]setTimeout inside for loop with random values

問題是,盡管for loop正確傳遞了setTimeout函數for loop但仍未獲得正確的值。 第二個問題是sleep變量不起作用,它只是忽略了它。 i這樣的其他變量表現得很奇怪,它們沒有經過循環,而是以隨機順序進行。

內部函數set_delay

console.log(i); 
// 3,5,0,2,4,1 should be 0,1,2,3,4,5
console.log(sleep); 
// 6000,6000,7000,9000,9000,10000, those ones are displayied in ASC order but shuold be randomly
console.log(share_screen_rate[i]); 
//4,1,6,10,6,2,8 - this is not ok it's random
console.log(top); 
// 749.5,2998,299.8,499.667,149,374.75 =>  this should be in order from smallest (149) to biggest (2998)

setTimeout(function() {

}, sleep);

如果我將sleep更改為像2000這樣的數值,則僅在第一次迭代后才尊重它,而只是在0ms進行。

完整代碼

https://jsfiddle.net/ojpv2nxu/

預期的輸出

這應該是一個簡單的腳本,它可以根據sleep變量向下滾動頁面並暫停,還可以根據share_screen_rate變量逐塊讀取頁面

我認為這是一個邏輯問題。...您期望setTimeout發生在最后一個之后的x秒。 但是設置后,它們會發射x秒。 因此它按預期工作。

如果您希望它們在最后一秒后觸發x秒,則需要更改邏輯以跟蹤秒數並調整計時器。

所以在文件頂部添加

var timeTrack = 0

而且您需要增加該值

timeTrack += sleep
setTimeout(function() {

}, timeTrack);

暫無
暫無

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

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