Що робить метод 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
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.