问题是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
的数值,则仅在第一次迭代后才尊重它,只是在0毫秒。
完整代码
https://jsfiddle.net/ojpv2nxu/
预期产量
这应该是一个简单的脚本,用于根据sleep
变量向下滚动页面并暂停,并基于share_screen_rate
变量逐块读取页面
答案 0 :(得分:1)
我认为这是一个逻辑问题。...您期望setTimeout发生在最后一个事件之后的x秒。但是设置后,它们会发射x秒。因此它按预期工作。
如果您希望它们在最后一秒后触发x秒,则需要更改逻辑以跟踪秒数并调整计时器。
因此在文件顶部添加
var timeTrack = 0
并且您需要添加该值
timeTrack += sleep
setTimeout(function() {
}, timeTrack);