簡體   English   中英

如何讓 setTimeout 調用 setInterval 使其在一段時間后執行?

[英]How to make a setTimeout to call a setInterval to make it execute after some time?

我希望我的doSomething在與setIntervalinterval不同的一段時間后執行,所以我使用了setTimeout(doSomething, 5000); 所以我可以在說 5 秒后調用doSomething ,但這似乎沒有發生。

關於我需要使用clearInterval來讓setInterval在我聲明的條件下停止執行,並且我需要有一個interval時間讓setIntervaldoSomething執行開始的延遲不同,我怎樣才能讓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.

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