Перейти до основного вмісту

Публікації

Показано дописи з січень, 2026

Error Handling в Node.js

Error Handling у Node.js vs Java У Java ми звикли до checked та unchecked exceptions, блоків try-catch-finally, та Spring'івських @ExceptionHandler. JavaScript має інший підхід до обробки помилок, особливо в асинхронному коді. // Java - знайомий підхід try { User user = userService.getUser(id); processUser(user); } catch (UserNotFoundException e) { logger.error("User not found", e); } catch (Exception e) { logger.error("Unexpected error", e); } finally { cleanup(); } // JavaScript/TypeScript - схожий синтаксис, різна семантика try { const user = await userService.getUser(id); await processUser(user); } catch (err) { if (err instanceof UserNotFoundError) { logger.error('User not found', err); } else { logger.error('Unexpected error', err); } } finally { cleanup(); } Ключова відмінність: У JavaScript немає checked exceptions. Всі помилки unchecked, компіл...

Callbacks, Promises, async/await в Node.js

Node.js однопотоковий і використовує неблокуючий I/O. Замість створення нових потоків, Node.js реєструє callback-функції, які викликаються, коли операція завершується. Це схоже на CompletableFuture у Java, але є основним способом роботи. 1. Callbacks: Перший підхід до асинхронності Callback — це функція, яку ви передаєте як аргумент і яка викликається після завершення операції. У Java це можна порівняти з передачею Consumer або Function як параметра. // Node.js - callback pattern import fs from 'fs'; // Error-first callback convention fs.readFile('user.json', 'utf8', (err, data) => { if (err) { console.error('Помилка читання файлу:', err); return; } console.log('Дані:', data); }); console.log('Цей рядок виведеться ПЕРШИМ!'); Конвенція Error-First Callback: Перший параметр завжди помилка (або null), другий — результат. Це стандарт у Node.js. Приклад: HTTP-запит з call...

Event Loop в Node.js

Event Loop в Node.js: архітектура, фази, черги Event Loop — це серце асинхронності в Node.js. Якщо ви знайомі з Java, то знаєте про багатопотоковість та Thread Pool. Node.js працює інакше: замість створення окремих потоків для кожного запиту, він використовує єдиний потік і Event Loop для обробки всіх операцій. Порівняння з Java/Spring Boot Java/Spring Boot (традиційна модель): Кожен HTTP-запит обробляється окремим потоком з Thread Pool Якщо потік блокується на I/O операції (база даних, файл), він чекає Обмежена кількість потоків (наприклад, 200) = максимум 200 одночасних запитів Node.js (асинхронна модель): Один основний потік (Event Loop) I/O операції делегуються системі (libuv), потік не блокується Може обробляти тисячі одночасних підключень на одному потоці // Java - блокуючий виклик String data = readFile("file.txt"); // потік чекає System.out.println(data); /...