[英]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.