更新 setInterval 值,为其自身设置间隔(不生成随机数)

Update setInterval value, with interval for itself (Not generating a random number)

jQuery我正在改变iframesrc,每60秒(这很好用).

我的jQuery:

$(document).ready(function(){
  var array = ['http://link1.com', 'http://link2.com', 'http://link3.com'];
  var locations = array;
  var len = locations.length;
  var iframe = $('#frame');
  var i = 0;
  setInterval(function () {
        iframe.attr('src', locations[++i]);
  }, 60000);

});

我的iframe:

<iframe id="frame" src="http://link.com"></iframe>

我的 iframe src 函数工作正常,我想要实现的是,而不是 fixed delay 数字 (现在 60 秒),我也想更改 delay 值,每次 iframe src 已更新。

新的delay号码将是随机号码,介于1530[=43之间=]秒

间隔一经定义便无法更改。解决方法是链接 setTimeout() 调用,在每次调用之间生成随机延迟,如下所示:

var locations = ['http://link1.com', 'http://link2.com', 'http://link3.com'];
var i = 0;

setTimeout(setSrc, getDelay());

function setSrc() {
  console.log(locations[++i % locations.length]);
  setTimeout(setSrc, getDelay());
}

function getDelay() {
  var delay = (Math.floor(Math.random() * 30) + 15) * 1000;
  console.log('waiting: ' + delay);
  return delay;
}

How can I make it so when loop is done, it stops?

在这种情况下,您可以检查是否 i > locations.length 然后不再调用该函数:

function setSrc() {
  console.log(locations[++i]);
  if (i < locations.length)
    setTimeout(setSrc, getDelay());
}