setTimeout (timeout 暂停)
setInterval (interval 间隔)
所以setTimeout就像设置一个闹钟,就响一次。
setInterval就像设置一个规律,比如让自己每过2小时眼睛就休息一下。
setTimeout和setInterval都会返回声明计时器的顺序(ID)
假如你设置了一个每隔1秒提示一下的setInterval(),现在需要停止它。
可以用clearInterval(id),setTimeout()对应的是clearTimeout(id)。
id需要是对应的计时器,但这样很麻烦。
所以通常我们给计时器起个名字,再clear它。
//设置一个计时器每隔一秒输出1
var clock1 = setInterval(function(){
console.log(1)
}, 1000)
clearInterval(clock1) //清除计时器clock1
计时器的执行顺序
for(var i = 0; i < 1000; i++){
console.log(1);
}
var clock2 = setTimeout(function(){
console.log("clock2")
},2000)
var clock1 = setTimeout(function(){
console.log("clock1")
},1000)
// 输出的结果是1000个1
// clock1
// clock2
计时器内的函数会到所有正常代码的最后才执行,即排在执行时间列表的最后。但是计时器的计时在前面的代码执行时就开始了。
所以事实上的结果是在1000个1执行完后,clock1、clock2立即一起输出。
而不是1000个1执行完后,过1秒输出clock1,再过2秒输出clock2.
浏览器的最小时间单位并不是1毫秒,是不稳定的。