Отличие диспетчеризации от подписки на событие

155
19 апреля 2022, 04:30

Есть код диспетчеризации

    var eventSubscribers = {};
    //Диспетчирезация события
    this.dispatch = function (eventName, payload){
        if(eventSubscribers.hasOwnProperty(eventName)){
            eventSubscribers[eventName].forEach(function (eventHandler){
                eventHandler(payload);
            });
        }
        return true;
    };

и подписки на событие

    //Подписка на событие. Возвращает метод отписки handler от события
    this.subscribe = function (eventName, handler){
        if(typeof handler !== 'function'){
            return;
        }
        if(!eventSubscribers.hasOwnProperty(eventName)){
            eventSubscribers[eventName] = [];
        }
        eventSubscribers[eventName].push(handler);
        return function (){
            eventSubscribers[eventName] = eventSubscribers[eventName].filter(function (currentHandler) {
                return currentHandler !== handler;
            });
        }
    }

В чем разница по производимому действию диспетчеризации и подписки на событие? Ведь если в коде написано

if(eventSubscribers.hasOwnProperty(eventName)){
            eventSubscribers[eventName].forEach(function (eventHandler){
                eventHandler(payload);
            });

то складывается впечатление, что на каждое событие eventSubscribers[eventName] подписывается обработчик события eventHandler. Такое ощущение, что

eventSubscribers[eventName].forEach(function (eventHandler){
                eventHandler(payload);
            });

и

eventSubscribers[eventName].push(handler);

делают одно и то же.

Answer 1

Отличие очевидно:

  1. добавление функции в массив
  2. вызов функции.

Ничего общего.

READ ALSO
Как корректно вставить условие?

Как корректно вставить условие?

Получаю ответ от сервера и на его основе выводу на страницу результаты поискав значениях может приходить null

173
Как сделать фильтр по диапазону? [закрыт]

Как сделать фильтр по диапазону? [закрыт]

Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение

129
Не работает плавное появление блока в jQuery

Не работает плавное появление блока в jQuery

Всем приветПомогите пожалуйста

219