[英]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.