如何清除这个setInterval?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

通常,id将间隔设置为var,然后清除var,var the_int = setInterval();clearInterval(the_int);但为了让我的代码工作,我把它放在一个匿名函数中:

function intervalTrigger() {
    setInterval( function() {
        if(timedCount >= markers.length){timedCount = 0;}
        google.maps.event.trigger(markers[timedCount], "click");
        timedCount++;
    }, 5000 );
};
intervalTrigger();

我如何清除这个?我做了尝试,var test = intervalTrigger();clearInterval(test);但没有奏效。其中,我预计它不会工作,但只是给它一个镜头。

基本上,我需要这个来停止一旦我的地图被点击触发...例如

google.maps.event.addListener(map, 'click', function() {
    //stop timer
});
提问于
用户回答回答于

setInterval方法返回一个可用于清除间隔的句柄。如果你想让函数返回它,你只需返回方法调用的结果:

function intervalTrigger() {
  return window.setInterval( function() {
    if (timedCount >= markers.length) {
       timedCount = 0;
    }
    google.maps.event.trigger(markers[timedCount], "click");
    timedCount++;
  }, 5000 );
};
var id = intervalTrigger();

然后清除间隔:

window.clearInterval(id);
用户回答回答于
// Initiate set interval and assign it to intervalListener
var intervalListener = self.setInterval(function () {someProcess()}, 1000);
function someProcess() {
  console.log('someProcess() has been called');
  // If some condition is true clear the interval
  if (stopIntervalIsTrue) {
    window.clearInterval(intervalListener);
  }
}

扫码关注云+社区