每隔随机秒使用setInterval运行一个函数

时间:2019-04-18 00:07:59

标签: javascript jquery node.js

我正在尝试使cron函数每randomInterval秒运行一次。

每次我运行此命令时,都会显示Maximum call stack size exceeded

-UPDATE:我将setInterval(cron(), randomInterval);更改为setInterval(cron, randomInterval);,这消除了最大调用堆栈错误。但这仍然不能作为可靠的cron。在前5次迭代之后,它将在不设置间隔的情况下执行cron函数。

任何帮助将不胜感激!

function cron() {
    randomInterval = randomIntFromInterval(1000, 9000);

    cronInterval = setInterval(cron, randomInterval);
}

function randomIntFromInterval(min, max) {
    return Math.floor(Math.random() * (max - min + 1) + min);
}

cron();

下面的代码对测试记录了时间间隔以及cron触发的时间。

function cron() {
    var d = new Date();

    var h = d.getHours();
    var m = d.getMinutes();

    h = (h < 10) ? "0" + h : h;
    m = (m < 10) ? "0" + m : m;

    console.log(h + ":" + m + "took screenshot ");

    randomInterval = randomIntFromInterval(1000, 9000);

    cronInterval = setInterval(cron, randomInterval);
    console.log(randomInterval/1000);
}

function randomIntFromInterval(min, max) {
    return Math.floor(Math.random() * (max - min + 1) + min);
}

cron()

0 个答案:

没有答案