JavaScript 提供定时执行代码的功能,叫做定时器。它们向任务队列添加定时任务。
setTimeout( 函数 || 执行的代码 ,time)
setTimeout只能运行一次,叫延时调用
//第一种写法:
setTimeout("console.log(1)",1000)
//第二种写法:
setTimeout(function(){console.log(1)},1000)
//第三种写法:
function fn(){console.log(1)}
setTimeout(fn,1000)
setInterval() 间歇调用
用法与setTimeout完全一致,区别仅仅在于setInterval指定某个任务
每隔一段时间就执行一次,也就是无限次的定时执行。
setInterval(function(){console.log(1)},1000)
清除定时器
clearTimeout() clearInterval()
先存储一个变量里,再直接清除
var timer1 = setTimeout(fn, 1000);
var timer2 = setInterval(fn, 1000);
clearTimeout(timer1);
clearInterval(timer2);
运行机制
js读取到setTimeout和setInterval会将这两种函数放到任务队列。直到所有的同步任务执行完毕之后才会执行任务队列里的任务。所以,这两种方法的执行时间我们无法保证。
setTimeout(function () {
console.log(1);
}, 0);
console.log(2);
//控制台先显示2再显示1
//递归函数:在函数内部调用函数本身
setTimeout(function timer(){
console.log(new Date());
setTimeout(timer,500)
},500)
//浏览器会把所有的性能集中到所看的页面
setInterval(function(){
var d=new Date()
console.log(d)
},500)
网友评论