// var count = 0;
// var timer = window.setInterval(function () {
// count++;
// console.log(count);
// if(count === 10) {
// window.clearInterval(timer);
// }
// },1000);
//使用setTimeout实现和setInterval一模一样的功能,使用递归的思想,每次执行完成之后重新设置一个新的定时器,让定时器到1s后重新执行move...
// var count = 0;
// var timer = window.setTimeout(function () {
// count++;
// console.log(count);
// timer=window.setTimeout(function () {
// count++;
// console.log(count);
// },1000);
// }, 1000);
var count = 0;
var timer = null;
function move() {
//每一次执行move方法都会重新创建一个新的setTimeout定时器,定时器执行一次就不在重新的执行了,但是我们并没有把它清除掉,导致了很多没用的定时器累计,占内存->在每一次执行move进来的第一件事情就是把上一次没用的那个定时器清除掉
window.clearTimeout(timer);
count++;
console.log(count);
if (count===10) {
return;
}
//arguments.callee->存储的是当前函数本身,等价于move
timer = window.setTimeout(arguments.callee,1000);
}
move();
</script>
定时器与递归
最新推荐文章于 2024-01-28 08:30:00 发布