Как написать Wait без использования Promise
1️⃣ Как кратко ответить
Для реализации функции ожидания без использования Promise в JavaScript можно использовать функцию setTimeout в сочетании с циклом, который блокирует выполнение кода на определенное время. Однако это не рекомендуется, так как блокирует основной поток выполнения.
2️⃣ Подробное объяснение темы
В JavaScript, когда мы говорим о "ожидании", мы обычно имеем в виду задержку выполнения кода на определенное время. Обычно для этого используется Promise вместе с функцией setTimeout. Однако, если мы хотим реализовать ожидание без использования Promise, мы можем использовать блокирующий цикл. Это не является хорошей практикой, так как блокирует основной поток выполнения и делает приложение неотзывчивым, но для образовательных целей можно рассмотреть такой подход.
Пример реализации функции ожидания без Promise
function wait(milliseconds) {
const start = Date.now(); // Запоминаем текущее время
let now = start; // Инициализируем переменную now текущим временем
// Цикл будет выполняться, пока разница между текущим временем и стартовым не станет больше заданного времени ожидания
while (now - start < milliseconds) {
now = Date.now(); // Обновляем текущее время
}
}
// Пример использования
console.log('Start waiting...');
wait(2000); // Ожидание 2 секунды
console.log('Finished waiting.');
Объяснение кода
-
function wait(milliseconds): Определяем функциюwait, которая принимает один аргумент — количество миллисекунд, на которое нужно задержать выполнение. -
const start = Date.now();: Сохраняем текущее время в переменнуюstart.Date.now()возвращает количество миллисекунд, прошедших с 1 января 1970 года. -
let now = start;: Инициализируем переменнуюnowзначениемstart. Это нужно для того, чтобы отслеживать текущее время в цикле. -
while (now - start < milliseconds): Запускаем цикл, который будет выполняться, пока разница между текущим временем (now) и стартовым временем (start) меньше заданного времени ожидания (milliseconds). -
now = Date.now();: Внутри цикла обновляем значениеnowтекущим временем. Это позволяет циклу проверять, сколько времени прошло с начала ожидания. -
console.log('Start waiting...');иconsole.log('Finished waiting.');: Эти строки выводят сообщения в консоль до и после вызова функцииwait, чтобы продемонстрировать задержку.
Почему это не рекомендуется
Использование блокирующего цикла, как в примере выше, делает приложение неотзывчивым, так как JavaScript выполняется в одном потоке. Это значит, что пока выполняется цикл ожидания, никакие другие операции, включая обработку пользовательского интерфейса, не могут быть выполнены. Это может привести к зависанию приложения и плохому пользовательскому опыту. В реальных приложениях для ожидания лучше использовать асинхронные методы, такие как Promise и async/await.
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться