Javascript jQuery在随机时间生成随机数

Javascript jQuery在随机时间生成随机数,javascript,jquery,Javascript,Jquery,我正在尝试做一个插件。在这个插件中,我有两个变量;rateMin和rateMax。我想在这两个数字之间生成一个随机数,并将其用作setInterval时间。然后,一旦这个数字被使用,再做一个随机数并使用它 下面是一个简单的例子: var defaults = { rateMin: 500, rateMax: 2000 } var options = $.extend(defaults, options); return this.each(function(defaults){

我正在尝试做一个插件。在这个插件中,我有两个变量;rateMin和rateMax。我想在这两个数字之间生成一个随机数,并将其用作setInterval时间。然后,一旦这个数字被使用,再做一个随机数并使用它

下面是一个简单的例子:

var defaults = {
    rateMin: 500,
    rateMax: 2000
}

var options = $.extend(defaults, options);
return this.each(function(defaults){

var rate = Math.floor(Math.random() * (options.rateMax - options.rateMin + 1)) + options.rateMin; // MAKE A RANDOM NUMBER BETWEEN MAX AND MIN
setInterval(function(){
    var rate = Math.floor(Math.random() * (options.rateMax - options.rateMin + 1)) + options.rateMin
    //DO SOMETHING
}, rate);
我希望通过这种方式,速率可以用一个新的数字覆盖自身,并在下次调用setInterval时使用。但它仍然只使用setInterval之前的第一个数字

我想我不知道如何在函数外使用变量

有什么建议吗?

如果您不希望每次延迟相同,请使用而不是。另外,如果希望在回调中覆盖外部范围中的变量,则不要在回调中使用var-rate。也就是说,我只是将这段逻辑封装在一个函数中,然后忘记它

function getNextRate() {
    return Math.floor(Math.random() * (options.rateMax - options.rateMin + 1)) + options.rateMin;
}

setTimeout(function foo(){
    //DO SOMETHING

    setTimeout(foo, getNextRate());
}, getNextRate());
如果不希望每次延迟相同,请使用而不是。另外,如果希望在回调中覆盖外部范围中的变量,则不要在回调中使用var-rate。也就是说,我只是将这段逻辑封装在一个函数中,然后忘记它

function getNextRate() {
    return Math.floor(Math.random() * (options.rateMax - options.rateMin + 1)) + options.rateMin;
}

setTimeout(function foo(){
    //DO SOMETHING

    setTimeout(foo, getNextRate());
}, getNextRate());

每次延迟改变时,您都需要停止旧的间隔并开始新的间隔。记住这一点,您也可以使用setTimeout。var关键字在间隔范围内生成一个新变量。您需要停止旧的间隔,并在每次延迟更改时启动一个新的间隔。考虑到这一点,您也可以使用setTimeout。var关键字在间隔范围内生成一个新变量。这样可以一次又一次地执行该操作吗?这应该是一个无限的loop@ntgCleaner对您需要在回调中显式调用setTimeout。看我的编辑。很好的例子。这正是我想要的。非常感谢。这是否能够一次又一次地执行该操作?这应该是一个无限的loop@ntgCleaner对您需要在回调中显式调用setTimeout。看我的编辑。很好的例子。这正是我想要的。非常感谢。