setTimeout (timeout 暫停)
setInterval (interval 間隔)
所以setTimeout就像設(shè)置一個(gè)鬧鐘,就響一次围俘。
setInterval就像設(shè)置一個(gè)規(guī)律晋柱,比如讓自己每過(guò)2小時(shí)眼睛就休息一下优构。
setTimeout和setInterval都會(huì)返回聲明計(jì)時(shí)器的順序(ID)
假如你設(shè)置了一個(gè)每隔1秒提示一下的setInterval(),現(xiàn)在需要停止它雁竞。
可以用clearInterval(id)钦椭,setTimeout()對(duì)應(yīng)的是clearTimeout(id)。
id需要是對(duì)應(yīng)的計(jì)時(shí)器碑诉,但這樣很麻煩彪腔。
所以通常我們給計(jì)時(shí)器起個(gè)名字,再clear它进栽。
//設(shè)置一個(gè)計(jì)時(shí)器每隔一秒輸出1
var clock1 = setInterval(function(){
console.log(1)
}, 1000)
clearInterval(clock1) //清除計(jì)時(shí)器clock1
計(jì)時(shí)器的執(zhí)行順序
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)
// 輸出的結(jié)果是1000個(gè)1
// clock1
// clock2
計(jì)時(shí)器內(nèi)的函數(shù)會(huì)到所有正常代碼的最后才執(zhí)行德挣,即排在執(zhí)行時(shí)間列表的最后。但是計(jì)時(shí)器的計(jì)時(shí)在前面的代碼執(zhí)行時(shí)就開(kāi)始了快毛。
所以事實(shí)上的結(jié)果是在1000個(gè)1執(zhí)行完后格嗅,clock1番挺、clock2立即一起輸出。
而不是1000個(gè)1執(zhí)行完后吗浩,過(guò)1秒輸出clock1,再過(guò)2秒輸出clock2.
瀏覽器的最小時(shí)間單位并不是1毫秒没隘,是不穩(wěn)定的懂扼。