UNPKG

core-cde

Version:

46 lines 1.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EventDispatcher = void 0; /** * Диспетчер, который может передавать события подписчикам. */ class EventDispatcher { /** * Конструктор */ constructor() { this._handlers = []; } /** * Ригистрирует новый обработчик у диспетчера. Каждый раз, * когда событие отправляется, обработчик получает уведомление. * @param handler Обработчик для регистрации. */ register(caller, handler) { this._handlers.push({ caller, handler }); } /** * Отписать обработчик от диспетчера. * @param handler Обработчик для удаления. */ unregister(caller, handler) { for (let i = 0; i < this._handlers.length; i++) { if (this._handlers[i].caller === caller) { if (this._handlers[i].handler === handler) { this._handlers.splice(i, 1); } } } } /** * Рассылает событие всем подписчикам. * @param event Данные о произошедшем событии. */ dispatch(event) { for (const item of this._handlers) { item.caller[item.handler.name](event); } } } exports.EventDispatcher = EventDispatcher; //# sourceMappingURL=Event.js.map