Есть функция сна в JavaScript?

Есть ли функция сна в JavaScript?

Ответ 1

Вы можете использовать функции setTimeout или setInterval.

Ответ 2

Если вы хотите заблокировать выполнение кода с вызовом sleep, то нет, для этого не существует метода JavaScript.

JavaScript имеет метод setTimeout. setTimeout позволит вам отложить выполнение функции за миллисекунды.

setTimeout(myFunction, 3000);

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

Помните, что это полностью отличается от того, как будет вести себя метод sleep, если он существовал.

function test1()
{    
    // let say JavaScript did have a sleep function..
    // sleep for 3 seconds
    sleep(3000);

    alert('hi'); 
}

Если вы запустите указанную выше функцию, вам нужно будет ждать 3 секунды (sleep вызов метода блокируется), прежде чем вы увидите предупреждение "привет" . К сожалению, в JavaScript нет функции sleep.

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');
}

Если вы запустите test2, вы сразу увидите "привет" (setTimeout не блокируется), и через 3 секунды вы увидите предупреждение "привет" .

Ответ 3

Наивный, ресурсоемкий метод блокирования выполнения на несколько миллисекунд:

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

Ответ 4

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

Этот код блокируется на указанную продолжительность. Это код загрузки процессора. Это отличается от потока, блокирующего самого себя и освобождающего циклы ЦП для использования другим потоком. Здесь такого не происходит. Не используйте этот код, это очень плохая идея.