Javascript 每个订阅服务器的唯一参数
“publish”方法能否将每个参数传递给相应的函数调用?我研究过的许多示例都显示了将参数传递给所有事件订阅者的“publish”方法。如果不是所有订阅者都使用相同的参数怎么办Javascript 每个订阅服务器的唯一参数,javascript,parameters,publish-subscribe,Javascript,Parameters,Publish Subscribe,“publish”方法能否将每个参数传递给相应的函数调用?我研究过的许多示例都显示了将参数传递给所有事件订阅者的“publish”方法。如果不是所有订阅者都使用相同的参数怎么办 let pubsub={ 订阅:函数(evt、func、args){ 如果(!事件[evt]){ 事件[evt]=[]; }; 让标记=(++subUid.toString(); 事件[evt]。推送({ 令牌:令牌, func:func }); 返回令牌; }, 取消订阅:功能(令牌){ for(在事件中设m){ if
let pubsub={
订阅:函数(evt、func、args){
如果(!事件[evt]){
事件[evt]=[];
};
让标记=(++subUid.toString();
事件[evt]。推送({
令牌:令牌,
func:func
});
返回令牌;
},
取消订阅:功能(令牌){
for(在事件中设m){
if(事件[m]){
for(设i=0,j=events[m]。长度;i
您可以通过索引跟踪每个函数所需的参数的键,但这不是典型的。
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;
}
};