簡體   English   中英

setTimeout似乎執行得太快

[英]setTimeout appears to execute too fast

我一直在使用setTimeout和setInterval,我無法讓代碼按照我希望的方式執行。 我的目標是創建一個setInterval,每隔三秒調用一次,並在十秒后清除它。 但是,當我在firebug中運行代碼時,我唯一得到的是一個數字,我假設它是setInterval的id,因為每次執行代碼時,數字都會增加。

var intID = setInterval(function() {
    console.log("I've been called");},3000);


setTimeout(clearInterval(intID), 10000);

這個說法:

setTimeout(clearInterval(intID), 10000);

表示“調用函數'clearInterval'傳遞變量'intID'的值,然后將返回值和數字10000傳遞給函數'setTimeout'。”

換句話說,您正在調用函數“clearInterval”,然后將返回的值傳遞給setTimeout()

相反,傳遞setTimeout()函數:

setTimeout(function() { clearInterval(intID); }, 10000);

沒有像這樣設置間隔:

setInterval(console.log("I've been called"), 3000);

如果你這樣做,則會立即調用console.log - 甚至 setInterval 之前 ,因為它是setInterval的參數,並且必須在調用使用它們的函數之前評估參數。

你為什么要像這樣設置超時

setTimeout(clearInterval(intID), 10000);

這導致與上述完全相同的問題。

只需執行設置間隔時所做的相同操作:

setTimeout(function() { clearInterval(intID); }, 10000);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM