请求动画帧循环

时间:2016-10-27 00:30:16

标签: javascript requestanimationframe

我遇到了这段代码 https://gist.github.com/joelambert/1002116我想过玩弄它

我试图创建一个循环并停止它

var tick = 0;
var dor = requestInterval(function(){
  tick++;
   console.log("hi", tick)
  if (tick > 10){

     stop();
  }
},300)

function stop(){ 
  console.log("stop")
     clearRequestInterval(dor);
}

但clearRequestInterval没有清除计时器。但是当我试图通过按钮的事件处理程序调用它时它的工作。我错过了什么吗?

我附加了一个codepen http://codepen.io/srajagop/pen/KgbbpR

1 个答案:

答案 0 :(得分:1)

@Bergi是对的,您尝试使用的示例代码已损坏,它不支持从区间函数本身中取消间隔计时器。您可以通过异步调用clearRequestInterval来解决这个问题:

function stop() {
  console.log("stop");
  window.setTimeout(function() {
    clearRequestInterval(dor);
  }, 0);
}

或许更好,您可以修复示例代码,即使它已从区间函数中取消,也不会重新安排自己。