JavaScript pubsub уникальный параметр для каждого подписчика - PullRequest
0 голосов
/ 27 февраля 2019

Может ли метод 'publish' передать каждый параметр (параметры) соответствующему вызову функции?Все исследованные мною примеры показывают, что метод 'publish' передает параметр (ы) ВСЕМ подписчикам событий.Что если не все подписчики принимают одинаковые параметры?

  let pubsub = {
      subscribe : function(evt, func, args) {
          if (!events[evt]) {
              events[evt] = [];
          };

          let token = (++subUid).toString();

          events[evt].push({
              token : token,
              func : func
          });

          return token;
      },

      unsubscribe : function(token) {
          for (let m in events) {
              if (events[m]) {

                  for (let i = 0, j = events[m].length; i < j; i++) {
                      if (events[m][i].token === token) {
                          events[m].splice( i, 1 );
                          return token;
                      };
                  };
              };
          };
          return this;
      },

      publish : function(evt, args) {
          if (!events[evt]) {
              throw ''+evt+' doesn\'t exist!';
          };

          const subscribers = events[evt];
          const len = (subscribers) ? subscribers.length : 0;

          for (let i = 0; i < len; i++) {
              subscribers[i].func(evt, args); /* SAME ARGUMENT(S) FOR ALL SUBSCRIBERS!!? */
          };

          return this;
      }
  };
...