Is er een slaapfunctie in JavaScript?
Antwoord 1, autoriteit 100%
U kunt de functies setTimeout
of setInterval
gebruiken.
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
.
JavaScript
heeft de methode setTimeout
. Met setTimeout
kun 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 (sleep
methodeaanroep 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’ (setTimeout
blokkeert 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.