gpt4 book ai didi

javascript - 如何在 javascript 的每次迭代中以随机间隔运行 setTimeout()?

转载 作者:行者123 更新时间:2023-11-30 11:06:54 25 4
gpt4 key购买 nike

我正在尝试迭代一个字符串数组,每一步迭代都有几毫秒的延迟。像下面这样的东西 -

var l = ['a', 'b', 'c'];
var delay = 5000;
for(var i = 0;i < l.lenght;i++) {
document.querySelectorAll("a[title='" + l[i] + "']")[0].parentNode.children[0].click();
delay = 5000 + Math.floor(Math.random() * 5000) + 1;
**<WAIT for 'delay' number of milliseconds**
}

我已经能够使用 setTimeout() 方法将代码转换为以下代码 -

var i = 0;
var interval = setInterval(function() {
if (i < l.length) {
document.querySelectorAll("a[title='" + l[i] + "']")[0].parentNode.children[0].click();
i++;
}
else {
clearInterval(interval);
}
//delay = 5000 + Math.floor(Math.random() * 5000) + 1); **NOT SURE where to change the delay variable**
}, delay);

但是一旦 setTimeout 启动,延迟变量基本上变成了一个常量。如何在每次迭代中更改延迟变量?

最佳答案

你可以为此做一个递归定时器函数:

尝试以下操作:

function displayValue(){

let arr = ['a', 'b', 'c'];
let delay = 1000;
let i = 0;

function timerFunction(i){
if(i === arr.length)
return;
setTimeout(()=>{
console.log(arr[i]);
i++;
timerFunction(i);
}, delay);
delay = delay + 1000 + Math.floor(Math.random() * 4000);
}

timerFunction(i);
}

displayValue();

关于javascript - 如何在 javascript 的每次迭代中以随机间隔运行 setTimeout()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55247314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com