Привет. Сегодня рассмотрим как сделать на функцию 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 — лишь испортит впечатление об использовании программы/сайта/интерфейса, из-за задержек в отклике на действия пользователя.