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毫秒,是不穩定的。