Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що робить once()?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)`.once(eventName, listener)` реєструє обробник, який спрацює **лише один раз**, а потім автоматично видалиться, тоді як `.on()` реєструє постійний обробник, що викликається кожного разу при `emit()`. **Ключове:** `once()` зручний для одноразових подій (`connect`, `ready`, `listening`) і сам запобігає витокам пам'яті, бо не потребує ручного `.off()`.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## 1. Що робить `once()` > Метод `.once(eventName, listener)` реєструє обробник події, > який **виконається лише один раз**, а потім автоматично **видалиться**. Після першого виклику події - слухач більше **не буде викликатися**, навіть якщо подія з тим самим іменем відбудеться знову. ### Приклад: ```javascript const EventEmitter = require('events'); const emitter = new EventEmitter(); emitter.once('connect', () => { console.log('З'єднання встановлено!'); }); emitter.emit('connect'); // спрацює emitter.emit('connect'); // більше не спрацює ``` Вивід: ```javascript З'єднання встановлено! ``` ## 2. Що робить `on()` > Метод `.on(eventName, listener)` реєструє **постійний** обробник події. > Він буде викликатися **щоразу**, коли подія генерується. ### Приклад: ```javascript emitter.on('data', () => { console.log('Отримано дані'); }); emitter.emit('data'); // спрацює emitter.emit('data'); // знову спрацює ``` Вивід: ```javascript Отримано дані Отримано дані ``` ## 3. Головна відмінність між `once()` і `on()` | Характеристика | `on()` | `once()` | |---|---|---| | Кількість спрацьовувань | Необмежено (щоразу при `emit()`) | Лише один раз | | Чи потрібно вручну видаляти слухача | Так, за потреби (`off()`) | Ні, видаляється автоматично | | Типові випадки використання | Повторювані події (наприклад, `data`, `message`) | Одноразові події (`connect`, `ready`, `close`, `finish`) | | Вплив на пам'ять | Слухач залишається | Слухач видаляється після виклику | ## 4. Чому `once()` корисний 1. **Уникає витоків пам'яті** - слухач видаляється автоматично. 2. **Зручний для ініціалізацій** - наприклад, подія `ready` у сервера чи `open` у потоку. 3. **Спрощує логіку** - не потрібно вручну викликати `.off()`. ## 5. Приклад з реальної практики Наприклад, у HTTP-сервера: ```javascript const http = require('http'); const server = http.createServer(); server.once('listening', () => { console.log('Сервер запущено!'); }); server.listen(3000); ``` Подія `'listening'` має відбутися **один раз** - тому `.once()` ідеально підходить. ## Підсумок > `on()` - додає *постійного слухача*, який викликається **щоразу** при `emit()`. > `once()` - додає *одноразового слухача*, який **видаляється після першого виклику**. > > Рекомендується: > > - використовувати `on()` для повторюваних подій (`data`, `message`, `update`); > - використовувати `once()` для одноразових подій (`connect`, `ready`, `close`, `init`).Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.