我的clearInterval方法有问题。
我在FrontendMasters上深入了解了JS,并且有一个练习,您需要使用setInterval并每秒记录一个字符串,然后在5秒钟后运行clearInterval。我可以使用正确的解决方案,但是我想知道为什么我的解决方案无法有效地理解。 console.log('clear called', func);
在5秒钟后运行,并记录clear called
字符串和函数主体。我试图使用setTimeout来包装wrapper.stop()
,但它也不以这种方式工作。我已经使用闭包来尝试解决该练习。这是我的剧本。
function sayHowdy() {
console.log('Howdy');
}
function everyXsecsForYsecs(func, interval, totalTime) {
function clear() {
console.log('clear called', func);
clearInterval(func);
}
return {
start() {
setInterval(func, interval);
},
stop() {
setTimeout(clear, totalTime);
}
}
}
const wrapper = everyXsecsForYsecs(sayHowdy, 1000, 5000);
wrapper.start();
wrapper.stop();
谢谢
最佳答案
clearInterval
不带功能,而是使用setInterval
时将返回的计时器ID(以便您可以在同一功能上设置多个计时器,并分别取消它们)。要使用它,请在everyXsecsForYsecs
中声明一个局部变量
var timer;
然后为其分配计时器:
timer = setInterval(func, interval);
然后您可以
clearInterval(timer)
。关于javascript - 为什么clearInterval在我的脚本中不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55677770/