setTimeout 操作順序 clearTimeout

setTimeout

  • 等待指定的毫秒數後執行一個函式。
  • 用於延遲函式的執行。

語法: setTimeout(function, milliseconds)window.setTimeout(function, milliseconds)

示例: 此示例在 1 秒後向控制檯輸出 hello。第二個引數以毫秒為單位,因此 1000 = 1 秒,250 = 0.25 秒等。

setTimeout(function() {
    console.log('hello');
}, 1000);

setTimeout 的問題

如果你在 for 迴圈中使用 setTimeout 方法

for (i = 0; i < 3; ++i) {
  setTimeout(function(){
    console.log(i);
  }, 500);
}

這將輸出值 3 three 次,這是不正確的。

解決此問題的方法:

for (i = 0; i < 3; ++i) {
  setTimeout(function(j){
    console.log(i);
  }(i), 1000);
}

它將輸出值 012。在這裡,我們將 i 作為引數傳遞給函式(j)。

操作順序

此外,由於 Javascript 是單執行緒並使用全域性事件迴圈這一事實,setTimeout 可用於通過呼叫 setTimeout 以零延遲將項新增到執行佇列的末尾。例如:

setTimeout(function() {
    console.log('world');
}, 0);

console.log('hello');

實際輸出:

hello
world

此外,此處零毫秒並不意味著 setTimeout 內的函式將立即執行。根據執行佇列中剩餘的要執行的專案,需要稍微多一點。這個只是推到佇列的末尾。

取消超時

clearTimeout() 停止執行 setTimeout() 中指定的函式

語法: clearTimeout(timeoutVariable) 或 window.clearTimeout(timeoutVariable)

示例:

var timeout = setTimeout(function() {
    console.log('hello');
}, 1000);

clearTimeout(timeout); // The timeout will no longer be executed