要解决此问题,可以使用setTimeout而不是setInterval。以下是startClicking函数的更新版本:
function startClicking(duration) {
const userDuration = duration || 5; // Default user input is 5 if no duration is provided
const lowerBoundary = Math.max(1, userDuration - 1); // Ensure lower boundary minimum is 1
const upperBoundary = userDuration + 1; // Upper boundary (6)
function clickWithRandomDuration() {
const randomizedMinutes = Math.floor(Math.random() * (upperBoundary - lowerBoundary)) + lowerBoundary;
const randomizedSeconds = Math.floor(Math.random() * 60);
const randomizedDuration = randomizedMinutes * 60 * 1000 + randomizedSeconds * 1000;
clickTargetButton(); // Click the button after the randomized duration
console.log(`Randomized/Next click in: ${randomizedMinutes} minutes ${randomizedSeconds} seconds`);
setTimeout(clickWithRandomDuration, randomizedDuration); // Use setTimeout instead of setInterval
}
clickTargetButton(); // Click the button immediately
setTimeout(clickWithRandomDuration, userDuration * 60 * 1000); // Initial delay for the first random click
}
在这个更新的代码中,我替换了
setInterval
具有
setTimeout
内部
clickWithRandomDuration
作用这样可以确保在随机化的持续时间之后安排下一次单击,而不会创建多个重叠的间隔。