TGViewer
Вёрстка сайтов | HTML, CSS, JS Вёрстка сайтов | HTML, CSS, JS @free_html_lessons · 4.52K subscribers
Post #2933 469
JS Задача: Event Emitter

Описание:
Разработайте класс EventEmitter. Этот интерфейс аналогичен (но с некоторыми отличиями) интерфейсу, описанному в Node.js или интерфейсу назначения событий в DOM. EventEmitter должен позволять подписываться на события и отправлять их.

Ваш класс EventEmitter должен иметь следующие два метода:
subscribe - Этот метод принимает два аргумента: имя события в виде строки и функцию обратного вызова. Эта функция обратного вызова будет вызвана позже, когда событие будет отправлено.
У события должно быть несколько слушателей для одного и того же события. При отправке события с несколькими обратными вызовами каждый из них должен вызываться в том порядке, в котором они были подписаны. Должен быть возвращен массив результатов. Можно предположить, что ни один из обратных вызовов, передаваемых для subscribe, не является ссылочно идентичным.
Метод subscribe также должен возвращать объект с методом unsubscribe, который позволяет пользователю отказаться от подписки. При его вызове обратный вызов должен быть удален из списка подписок, а значение undefined должно быть возвращено

Пример:
Input: 
actions = ["EventEmitter", "emit", "subscribe", "subscribe", "emit"],
values = [[], ["firstEvent"], ["firstEvent", "function cb1() { return 5; }"], ["firstEvent", "function cb1() { return 6; }"], ["firstEvent"]]
Output: [[],["emitted",[]],["subscribed"],["subscribed"],["emitted",[5,6]]]
Explanation:
const emitter = new EventEmitter();
emitter.emit("firstEvent"); // [], no callback are subscribed yet
emitter.subscribe("firstEvent", function cb1() { return 5; });
emitter.subscribe("firstEvent", function cb2() { return 6; });
emitter.emit("firstEvent"); // [5, 6], returns the output of cb1 and cb2


#домашка
More from @free_html_lessons
  1. Sep 25, 2026Post #3059
  2. Sep 25, 2026Макет для тренировки (rectop) Перейти к макету 🧑‍💻 #макет@free_html_lessons
  3. Sep 24, 2026Post #3057
  4. Sep 24, 2026Timeline Tree Посмотреть на codepen 👨‍💻 #практика
  5. Sep 23, 2026Применение редких html атрибутов на практике. 2 часть Читать 👨‍💻 #полезнаястатья
  6. Sep 22, 2026🔴AI кодинг интервью с разработчиком из международного FinTech в четверг в 19:00 ДА! Вайбк…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →