Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що робить метод emit()?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)`.emit(eventName, [...args])` генерує подію з іменем `eventName` і викликає всі обробники, підписані на неї через `.on()` чи `.once()`, передаючи їм аргументи; повертає `true`, якщо був хоча б один слухач, і `false` - якщо ні. **Ключове:** якщо `.emit('error', ...)` викликати без жодного обробника `'error'`, Node.js кине виняток і завершить процес - тому обробник `'error'` варто додавати завжди.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## 1. Що робить `emit()` > Метод `.emit(eventName, [...args])` > **генерує подію** з іменем `eventName` і викликає всі обробники (`listeners`), > які були підписані на цю подію через `.on()` чи `.once()`. ### Приклад: ```javascript const EventEmitter = require('events'); const emitter = new EventEmitter(); // Підписка emitter.on('greet', (name) => { console.log(`Привіт, ${name}!`); }); // Генерація події emitter.emit('greet', 'Тім'); ``` Вивід: ```javascript Привіт, Тім! ``` Що відбулося: 1. `.emit('greet', 'Тім')` - створює подію `greet`; 2. Node.js знаходить усіх слухачів `greet`; 3. викликає кожного з них, передаючи `'Тім'` як аргумент; 4. якщо слухачів немає - нічого не відбувається. ## 2. Синтаксис ```javascript emitter.emit(eventName[, ...args]) ``` - `eventName` - рядок (ім'я події); - `...args` - будь-які значення, які будуть передані слухачам. ## 3. Як це працює "під капотом" Коли викликається `.emit()`: 1. Node.js звертається до **внутрішньої карти** слухачів (`_events`); 2. перевіряє, чи є слухачі для `eventName`; 3. якщо є - викликає їх **у порядку реєстрації** (`.on()` -> `.once()`); 4. якщо це `.once()`, слухач **видаляється після виклику**; 5. якщо подія `'error'` викликана без слухача - кидається **виняток**, і процес завершується. ### Особлива поведінка для `'error'` Якщо викликати: ```javascript emitter.emit('error', new Error('Щось пішло не так')); ``` і **немає слухача** `'error'`, Node.js: - кине помилку (`Uncaught Error`); - **завершить процес**. Тому хорошою практикою є **додавати обробник** `'error'`: ```javascript emitter.on('error', (err) => { console.error('Помилку впіймано:', err.message); }); ``` ## 4. Значення, що повертається `.emit()` повертає: - `true`, якщо у події є хоча б один слухач; - `false`, якщо слухачів немає. ```javascript console.log(emitter.emit('greet')); // true console.log(emitter.emit('unknown')); // false ``` ## 5. Приклад з кількома слухачами ```javascript emitter.on('update', () => console.log('Оновлення отримано')); emitter.on('update', () => console.log('Дані оброблено')); emitter.emit('update'); ``` Вивід: ```javascript Оновлення отримано Дані оброблено ``` ## 6. Приклад з аргументами ```javascript emitter.on('sum', (a, b) => { console.log('Сума =', a + b); }); emitter.emit('sum', 3, 7); ``` Вивід: ```javascript Сума = 10 ``` ## Підсумок > Метод `.emit()`: > > - **генерує подію** в об'єкті `EventEmitter`; > - викликає **всі обробники**, підписані через `.on()` і `.once()`; > - може передавати **аргументи слухачам**; > - повертає `true`, якщо слухачі є, і `false`, якщо немає. > > Це - основний спосіб "сказати" системі, що **щось відбулося**, > щоб інші частини коду **відреагували**.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.