Javascript 设置不同持续时间的间隔

Javascript 设置不同持续时间的间隔,javascript,jquery,settimeout,setinterval,Javascript,Jquery,Settimeout,Setinterval,下面的代码启动幻灯片放映的循环。当第一次幻灯片放映完成后,我想在第一次幻灯片放映时暂停6000ms。在这种情况下,我希望能够将时间添加为6000ms,而不是1000ms this.isPlaying = setInterval(function(){ self._change(null, "-=", null, self.lineScrollDo, null); }, 1000); 使用setTimeout而不是setInterval:

下面的代码启动幻灯片放映的循环。当第一次幻灯片放映完成后,我想在第一次幻灯片放映时暂停6000ms。在这种情况下,我希望能够将时间添加为6000ms,而不是1000ms

this.isPlaying = setInterval(function(){
                self._change(null, "-=", null, self.lineScrollDo, null);
            }, 1000);

使用setTimeout而不是setInterval:

var _this = this;
(function(){
  function next(){
    self._change(null, "-=", null, self.lineScrollDo, null);
    var duration = 1000;
    if(/* cond */)
      duration = 6000;
    _this.isPlaying = setTimeout(next, duration);
  }
  _this.isPlaying = setTimeout(next, 1000);
})();

setInterval
方法保持一致,另一种方法可能只是使用计数器

(function(){
  var counts = 0, target = 6, self = /* Refer to your object here */;
  self.isPlaying = setInterval(function(){
    if ( ++counts === target ) {          
      self._change(null, "-=", null, self.lineScrollDo, null);
      target = target === 6 ? 1 : 6;
      counts = 0;
    }
  }, 1000); /// <-- needs to be set at offset that will hit both 1 and 6 secs.
})();
然后,而不是使用:

target = target === 6 ? 1 : 6;
您使用:

targets.push( target );
target = targets.shift();

假设您需要时间偏移的循环模式,即。

您必须停止间隔,将新间隔设置为6秒,停止,然后返回到1秒。重构它时最好不要使用setInterval。或者可能包括一个已经具有此功能的幻灯片(cycle2),这与代码的工作方式相同。我还希望能够在某些条件下清除此超时,如悬停时,我应该能够清除此settimeout生成的超时。语法是什么?@web\u dev是的,您可以清除它。我稍微修改了一下。请注意,如果
self
已经是对
的引用,那么您不需要第一行,只需要
self
而不是
\u此
。经过修改后,您应该能够使用
clearTimeout(yourobject.isPlaying)
targets.push( target );
target = targets.shift();