jQuery在随机时间生成随机数

jQuery generate random number at a random time

本文关键字:随机数 时间 随机 jQuery      更新时间:2023-09-26

我正在尝试制作一个插件。在这个插件中,我有两个变量;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之前的第一个数字。

我想我不知道如何在它的函数之外使用变量。

有什么建议吗?

如果您不希望每次延迟相同,请使用setTimeout而不是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());