Skip to main content

Що робить метод on()?

1. Що робить on()

.on(eventName, listener) реєструє обробник (функцію) для вказаної події. Кожного разу, коли подія з іменем eventName буде згенерована через .emit(), усі обробники, додані через .on(), будуть викликані в порядку реєстрації.

Приклад:

javascript
const EventEmitter = require('events'); const emitter = new EventEmitter(); // Підписка emitter.on('message', (text) => { console.log('Отримано повідомлення:', text); }); // Генерація події emitter.emit('message', 'Привіт, Node.js!');

Вивід:

javascript
Отримано повідомлення: Привіт, Node.js!

2. Синтаксис

javascript
emitter.on(eventName, listener)
  • eventName - рядок, ім'я події (наприклад, 'data', 'error', 'end').
  • listener - функція-обробник, яка буде викликана при настанні події.

3. Приклад з кількома слухачами

javascript
emitter.on('update', () => console.log('Перший слухач')); emitter.on('update', () => console.log('Другий слухач')); emitter.emit('update');

Вивід:

javascript
Перший слухач Другий слухач

4. Чим on() відрізняється від addListener()

МетодВідмінність
.on()Сучасна і більш читабельна назва методу
.addListener()Стара назва, введена заради сумісності (працює точно так само)

По суті, on() - це алiас (синонім) для addListener():

javascript
EventEmitter.prototype.on === EventEmitter.prototype.addListener // true

Тобто:

javascript
emitter.on('event', listener);

і

javascript
emitter.addListener('event', listener);

роблять одне й те саме.

5. Коли який варто використовувати

  • Використовуй .on() - це сучасний і звичний варіант (прийнятий в офіційній документації і в усіх прикладах).
  • .addListener() залишився заради зворотної сумісності з ранніми версіями Node.js.

Підсумок

on() - підписує функцію на подію (виклик при кожному emit()). addListener() - повністю ідентичний метод, просто стара назва. Різниці в поведінці немає взагалі - це алiаси одного й того самого методу.

Рекомендується використовувати .on() як сучасний стандарт.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.