簡體   English   中英

從另一個 function 暫停 JS function

[英]Pause JS function from another function

有什么辦法可以從另一個 function 暫停下面的一組延遲功能? 我想通過執行另一個 function 將所有內容暫停 10 秒。

我需要的是這樣的:

function pause(){
pause sleepLoop() for 10 seconds
}

如果無法暫停以下執行,我可以殺死它嗎?

function game() {
sleepLoop();
}

function sleepLoop() {
loop...
setTimeout('gameActions()',5000);
}

function gameActions() {
actions...
sleepLoop();
}

將計時器存儲在變量中。 然后你可以用clearTimeout停止它,並在 10 秒后重新啟動它:

function game() {
   sleepLoop();
}

var sleepLoopTimeout;

function sleepLoop() {
    gameActions();
    sleepLoopTimeout = setTimeout(sleepLoop,5000);
}

function pause(){
    clearTimeout(sleepLoopTimeout);
    setTimeout(sleepLoop, 10000);
}

function gameActions() {
    // Actions
}
var gameTimeout, sleepTimeout;

function game() {
   gameTimeout = setTimeout(sleepLoop, 10000); //start in 10 seconds
}

function sleepLoop() {
   sleepTimeout = setTimeout(gameActions, 5000); //start in 5 secs
}

function gameActions() {
   sleepLoop();
}

//start it off:
game();

除了上述以外,我不確定你在問什么。


殺死(清除)超時:

clearTimeout(gameTimeout);
clearTimeout(sleepTimeout);
var blocked = false;

function loopToBePaused()
{
    if (blocked !== false)
    {
        // will check for blocker every 0.1s
        setTimeout(loopToBePaused, 100);
        return;
    }
    // payload

    // normal loop now, e.g. every 1s:
    setTimeout(loopToBePaused, 1000);
}

// somewhere in code run:
blocked = setTimeout(function() {
    // blocking our loop'ed function for 10s
    blocked = false;
}, 10000);
// this will block our main loop for 10s

暫無
暫無

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

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