您好,我很想知道如何在setInterval中存档延迟? 可以说我有这样的东西:
function delay(min, max) {
const d = Math.floor((Math.random() * (max - min)) + min);
return d;
}
setInterval(function() {
console.log("Hello");
}, delay(1000, 2000));
这里的问题是,它始终在控制台控制台中生成延迟。我想在每个console.log中产生新的延迟。有可能吗?
答案 0 :(得分:3)
您可以使用setTimeout
并递归调用:
function delay(min, max) {
const d = Math.floor((Math.random() * (max - min)) + min);
return d;
}
function func() {
console.log("Hello");
setTimeout(func, delay(1000, 2000));
}
setTimeout(func, delay(1000, 2000));
更通用的方法是您自己的间隔生成器:
function setVariableInterval(f, d) {
function timeoutFunc() {
f();
setTimeout(timeoutFunc, d());
}
setTimeout(timeoutFunc, d());
}
//You would call it like:
setVariableInterval(func, delay.bind(null, 1000, 2000));