JavaScript Ready | Программирование
8.18K subscribers
987 photos
60 videos
524 links
Авторский канал по разработке на JavaScript.
Ресурсы, обучения, задачи, шпаргалки.
Ежедневно информация пополняется!

Cотрудничество: @energy_c
Download Telegram
📱 Консольная игра змейка!

Сегодня покажу, как сделать настоящую мини-игру змейку прямо в терминале — с управлением, движением и логикой столкновений.

В этом посте:
• Работа с real-time input через readline;

• Отрисовка ASCII-анимации в консоли;

• Движение, рост и завершение игры при коллизии.


Прекрасная практика массивов, циклов, координат и работы с событиями.

📣 JS Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍11❤6
📱 Реализация таймаута для Promise без внешних библиотек!

Иногда 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));
};


🔥 Таймауты и отмены — это то, что делает код надёжным.

📣 JS Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍8❤6
📱 Пишем умный калькулятор покупок!

Создаём консольную утилиту, которая превращает обычный список товаров в аккуратный чек с подсчётом скидок, налогов и итоговой суммы.

В этой задаче:
• Реализуем обработку пользовательского ввода через readline;

• Формируем корзину и рассчитываем скидки, налоги и итог;

• Выводим красиво оформленный чек, как в настоящем магазине.


Проект учит продумывать структуру, обработку ошибок и удобство вывода для пользователя.

📣 JS Ready | #задача
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 требуют 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);


🔥 Такой пример полезен для практики работы с объектом location, управления навигацией и понимания поведения редиректов в браузере.

📣 JS Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11❤6🤝6
📱 File API — работа с файлами в браузере!

Здесь собраны основные методы для выбора, чтения, предпросмотра и сохранения файлов. Эти инструменты используются при создании загрузчиков, предпросмотров изображений и экспорта данных. File API предоставляет набор средств для клиентской обработки файлов.

📣 JS Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍9❤7
Что же выведет консоль?
Anonymous Quiz
25%
A
28%
B
37%
C
10%
D
👍17🔥7❤6