我遇到了这段代码 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
答案 0 :(得分:1)
@Bergi是对的,您尝试使用的示例代码已损坏,它不支持从区间函数本身中取消间隔计时器。您可以通过异步调用clearRequestInterval
来解决这个问题:
function stop() {
console.log("stop");
window.setTimeout(function() {
clearRequestInterval(dor);
}, 0);
}
或许更好,您可以修复示例代码,即使它已从区间函数中取消,也不会重新安排自己。