1. 程式人生 > >超時呼叫(setTimeout)和間歇呼叫(setInterval)

超時呼叫(setTimeout)和間歇呼叫(setInterval)

1.超時呼叫

console.log(1);
var timeouId = setTimeout('console.log(12)', 2000); // 不會阻塞,而是在多長時間後將此任務新增到任務佇列,然後任務佇列根據新增進來任務的先後順序進行執行,故此處不一定是2s後執行。第一個引數可以是函式,也可以是字串,此處儘量不要寫字串
clearTimeout(timeouId); // 可能導致立刻被取消,從而上面的setTimeout的函式不再執行
console.log(2);

超時呼叫的clearTimeout(取消尚未執行的超時呼叫計劃)一般是不用的
2.間歇呼叫

var intervalId = null
, num = 0, max = 10; function intervalHandler() { num++; if (num === max) { clearInterval(intervalId); alert("done"); } } intervalId = setInterval(intervalHandler, 500);

而clearInterval(取消間歇呼叫)一般是必須的,否則,直到頁面解除安裝,程式還在執行。
這個模式也可以使用超時呼叫來實現:

var num = 0,
    max = 10;
function
timeoutHendler() {
num++; if (num < max) { setTimeout(timeoutHendler, 500); } else { alert("done"); } } setTimeout(timeoutHendler, 500);

注意
使用超時呼叫來模擬間歇呼叫,是一種最佳模式。因為後一個間歇呼叫可能會在前一個間歇呼叫結束之前啟動