[英]How to make a setTimeout to call a setInterval to make it execute after some time?
我希望我的doSomething
在與setInterval
的interval
不同的一段時間后執行,所以我使用了setTimeout(doSomething, 5000);
所以我可以在說 5 秒后調用doSomething
,但這似乎沒有發生。
關於我需要使用clearInterval
來讓setInterval
在我聲明的條件下停止執行,並且我需要有一個interval
時間讓setInterval
與doSomething
執行開始的延遲不同,我怎樣才能讓doSomething
在之后開始執行5秒?
function doSomething() { let a = 1; return setInterval(() => { console.log(a); if (a < 6) { a++; } else { return a = 1; clearInterval(id); } }, 1000); } var id = doSomething(); setTimeout(doSomething, 5000);
var id = doSomething();
立即調用 function (並因此開始間隔)。 由於setInterval()
和clearInterval()
都在同一個 function 內,因此無需返回區間 ID。 只需在 function 中本地跟蹤它。 這樣你只需要調用doSomething()
,它就會自行啟動和停止。
最后,請注意setInterval()
的第一次調用不會立即執行,而是會等待給定的延遲。 因此,如果您希望第一次調用在 5 秒后進行,則需要從setTimeout()
的5000
中減去setInterval()
的1000
。 (或者立即手動調用重復的 function。)
function doSomething() { let a = 1; let intervalId = setInterval(() => { console.log(a); if (a < 6) { a++; } else { clearInterval(intervalId); } }, 1000); } setTimeout(doSomething, 4000);
setTimeout 運行doSomething
關於 4s 延遲
和doSomething
做第一個 console.log 大約 1s 延遲
所以第一個console.log在4s + 1s == 5s延遲后開始
function doSomething() { let a = 1, id = setInterval(() => { console.log(a++); if (a > 5) clearInterval(id); }, 1000); } setTimeout( doSomething, 4000);
首先。 如果調用創建區間的 function,它將創建一個區間。 如果您不使用超時,您不能調用 function 並期望它有超時。
這有效:
function foo() {
var i = 0;
var iId = setInterval(() => {
console.log('Hello World -' + i);
i++;
if (i > 5) {
clearInterval(iId);
}
}, 1000);
}
然后:
setTimeout(() => { foo(); }, 5000)
嘗試這樣做
function doSomething() {
let a = 1;
return setInterval(() => {
console.log(a);
if (a < 6) {
a++;
} else {
clearInterval(id)
return a = 1;
}
}, 1000);
}
var id = doSomething();
setTimeout(doSomething, 5000);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.