Сегодня покажу, как сделать настоящую мини-игру змейку прямо в терминале — с управлением, движением и логикой столкновений.
В этом посте:
• Работа с real-time input через readline;
• Отрисовка ASCII-анимации в консоли;
• Движение, рост и завершение игры при коллизии.
Прекрасная практика массивов, циклов, координат и работы с событиями.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍11❤6
Иногда
fetch() или любой промис может зависнуть, а код просто ждёт.Promise.race(), как вариант решения: запускает несколько промисов и возвращает результат первого завершившегося:const withTimeout = (ms, task) =>
Promise.race([
task,
new Promise((_, reject) =>
setTimeout(() => reject(new Error('Timeout')), ms)
)
]);
Теперь можно ограничить жизнь любого промиса:
await withTimeout(3000, fetch('/api/data'));Если запрос не успеет за 3 секунды, вылетит
Error('Timeout'), и код не будет висеть.Также можно добавить отмену при таймауте через
AbortController:const fetchWithTimeout = (url, ms) => {
const controller = new AbortController();
const timer = setTimeout(() => controller.abort(), ms);
return fetch(url, { signal: controller.signal })
.finally(() => clearTimeout(timer));
};Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍8❤6
Создаём консольную утилиту, которая превращает обычный список товаров в аккуратный чек с подсчётом скидок, налогов и итоговой суммы.
В этой задаче:
• Реализуем обработку пользовательского ввода через readline;
• Формируем корзину и рассчитываем скидки, налоги и итог;
• Выводим красиво оформленный чек, как в настоящем магазине.
Проект учит продумывать структуру, обработку ошибок и удобство вывода для пользователя.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥11🤝5❤4
Проверяем, открыта ли страница по HTTPS!
Безопасное соединение — важное условие для работы многих Web API. Большинство таких API требуют
Проверить протокол можно так:
Если нужно принудительно перенаправить пользователя на
Также можно быстро вывести текущий адрес страницы:
🔥 Такой пример полезен для практики работы с объектом location, управления навигацией и понимания поведения редиректов в браузере.
📣 JS Ready | #практика
Безопасное соединение — важное условие для работы многих Web API. Большинство таких API требуют
secure context — то есть HTTPS или http://localhost.Проверить протокол можно так:
const isSecure = window.location.protocol === "https:";
console.log("Безопасное соединение:", isSecure);
Если нужно принудительно перенаправить пользователя на
HTTPS:if (window.location.protocol !== "https:") {
const { host, pathname, search, hash } = window.location;
window.location.replace(`https://${host}${pathname}${search}${hash}`);
}Также можно быстро вывести текущий адрес страницы:
console.log("Текущий адрес:", window.location.href);Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11❤6🤝6
Здесь собраны основные методы для выбора, чтения, предпросмотра и сохранения файлов. Эти инструменты используются при создании загрузчиков, предпросмотров изображений и экспорта данных. File API предоставляет набор средств для клиентской обработки файлов.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍9❤7
👍17🔥7❤6
Promise.all() запускает все задачи одновременно, поэтому при большом числе запросов важно ограничивать параллельность их выполнения.В этом гайде:
• Реализуем собственный пул промисов с параметром limit;
• Добавим поддержку сохранения порядка выполнения;
• Применим решение для пакетной обработки запросов и фоновых задач.
Такой подход делает асинхронный код устойчивым даже при большом количестве задач.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12🔥7👍5🤝1