每个订阅者的JavaScript pubsub唯一参数

时间:2019-02-27 05:34:07

标签: javascript parameters publish-subscribe

“发布”方法能否将每个参数传递给适当的函数调用?我研究的所有示例都显示了将参数传递给所有事件订阅者的“发布”方法。如果不是所有的订户都使用相同的参数怎么办?

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

0 个答案:

没有答案