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

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

    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);

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


Ответы (1 шт):

Автор решения: Grundy

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

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

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

→ Ссылка