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

Публікації

Показано дописи з міткою "асинхронність"

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); /...