Is er een slaapfunctie in JavaScript?

Is er een slaapfunctie in JavaScript?


Antwoord 1, autoriteit 100%

U kunt de functies setTimeoutof setIntervalgebruiken.


Antwoord 2, autoriteit 94%

Als je de uitvoering van code wilt blokkeren met een aanroep van sleep, nee, daar is geen methode voor in JavaScript.

JavaScriptheeft de methode setTimeout. Met setTimeoutkun je de uitvoering van een functie x milliseconden uitstellen.

setTimeout(myFunction, 3000);
// if you have defined a function named myFunction 
// it will run after 3 seconds (3000 milliseconds)

Onthoud dat dit totaal anders is dan hoe de sleep-methode, als deze zou bestaan, zich zou gedragen.

function test1()
{    
    // let's say JavaScript did have a sleep function..
    // sleep for 3 seconds
    sleep(3000);
    alert('hi'); 
}

Als u de bovenstaande functie uitvoert, moet u 3 seconden wachten (sleepmethodeaanroep blokkeert) voordat u de waarschuwing ‘hi’ ziet. Helaas is er geen sleep-functie zoals die in JavaScript.

function test2()
{
    // defer the execution of anonymous function for 
    // 3 seconds and go to next line of code.
    setTimeout(function(){ 
        alert('hello');
    }, 3000);  
    alert('hi');
}

Als u test2 uitvoert, ziet u meteen ‘hi’ (setTimeoutblokkeert niet) en na 3 seconden ziet u de waarschuwing ‘hallo’.


Antwoord 3, autoriteit 95%

Een naïeve, CPU-intensieve methode om de uitvoering een aantal milliseconden te blokkeren:

/**
* Delay for a number of milliseconds
*/
function sleep(delay) {
    var start = new Date().getTime();
    while (new Date().getTime() < start + delay);
}

Antwoord 4, autoriteit 56%

function sleep(delay) {
    var start = new Date().getTime();
    while (new Date().getTime() < start + delay);
}

Deze code blokkeert voor de opgegeven duur. Dit is CPU-hogging-code. Dit is anders dan een thread die zichzelf blokkeert en CPU-cycli vrijgeeft om door een andere thread te worden gebruikt. Zoiets gebeurt hier niet. Gebruik deze code niet, het is een heel slecht idee.

Other episodes