Привет. Сегодня рассмотрим как сделать на функцию Javascript sleep. Эта функция из более древних языков программирования (сейчас даже тяжело сказать где она появилась в первую очередь), и предназначена для приостановки выполнения программного кода на определённое количество милисекунд.

javascript sleep

В самом Javascript такой функции нет, но можно что-нибудь придумать с её реализацией.

Реализация Javascript sleep, способ 1

Итак, можно использовать способ 1, и вызывать функцию которая будет выполняться заданное количество милисекунд, и после её выполнения код перейдет к следующему шагу. Эта функция достаточно жадная, и её суть должна заключаться в том, что она «крутить» цикл до тех пор, пока не наступит нужное время.

function sleep(ms)
 {
  var date = new Date();
  var curDate = null;
  do { curDate = new Date(); }
  while(curDate-date < ms);
}

То есть описанная выше функция на Javascript sleep получает текущее время, и потом начинает выполнять цикл do .. while до тех пор, пока разница между первым полученным временем (при запуске функции) и текущим временем (на момент каждой итерации цикла) будет меньше, чем заданное количество милисекунд (ms).

Всё конечно здорово, но это как пользоваться копьем и бумерангом в эпоху бластеров и космических путешествий (в общем не очень удачный и современный пример).

Функция на Javascript sleep, способ 2

Второй, более современный способ использовать встроенную в Javascript функциональность setTimeout и передавать туда указатель на функцию. Всё это можно обернуть в функцию sleep для удобства использования.

function sleep(ms, callback){
   setTimeout(function(){callback();}, ms);
}

По сути это равносильно вызову в код функции setTimeout, но обернуто в красивую функцию sleep. И в отличае от первого способа, на самом деле это не затормозит выполнение кода, а просто отложит выполнение вашей функции (другие функции продолжат работать). С одной стороны это хорошо, так как не так сильно "жадничает", а с другой стороны истинной sleep не получается.

Надеюсь, примеры реализации функции на Javascript sleep вам помогут, но будьте осторожны, использование sleep в коде крайне не рекомендуется (разве что это какая-то игра или специальная учебная программа), в реальной жизни в большинстве случаев javascript sleep — лишь испортит впечатление об использовании программы/сайта/интерфейса, из-за задержек в отклике на действия пользователя.