var timer1 = (cb, time) => {
(function loop() {
cb();
setTimeout(loop, time);
})();
};
var timer2 = (cb, time) => {
cb();
setInterval(cb, time);
};
- timer1 这段代码是循环还是递归?
- timer1 和 timer2 有什么区别?
var timer1 = (cb, time) => {
(function loop() {
cb();
setTimeout(loop, time);
})();
};
var timer2 = (cb, time) => {
cb();
setInterval(cb, time);
};
timer1
和timer2
的区别,其实就是setTimeout
和setInterval
的区别setTimeout()方法只运行一次,也就是说当达到设定的时间后就出发运行指定的代码,运行完后就结束了,
如果还想再次执行同样的函数,可以在函数体内再次调用setTimeout(),可以达到循环调用的效果。
setInterval()是循环执行的,即每达到指定的时间间隔就执行相应的函数或者表达式,是真正的定时器。
10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
递归,间接的。
区别是1会在cb抛异常时停止,2不会停止。
另一个区别是1可以改造成高精度,2则完全依赖于浏览器自身的精度