动态 javascript 根据数据加载和订阅事件?

dynamic javascript load and subscribe to event based on data?

我有一个 javascript 客户端使用 进行消息传递。我正在订阅这样的频道:

    pubnub.subscribe({
        channel : chnl,
        message : function(m){
            var msg = $.parseJSON(m);
            processMessage(msg);
        }
    );

我有一堆 widgets/components 目前只包含动态加载的 HTML。现在processMessage()基本上就是说"If the message ID is widget1 then do a bunch of stuff"。我想修改组件文件以包含处理所有小部件数据的 javascript,以及一些如何注册挂钩以检测何时带有与小部件匹配的 ID 的 PubNub 消息。

我该怎么做?

有关详细信息,请参阅 programmers.stackexchange.com 上的 this question

您可以保留一个简单的回调映射并在收到消息时进行查找。

类似于:

var callbackMap = {};

function registerCallback(id, callback) {
  callbackMap[id] = callback;
}

function processMessage(msg) {
  callbackMap[msg.id](msg.data);
}

在每个组件中,您将注册:

registerCallback('widget1', function(data) {
  //do something for widget1 with data
});

并在留言中:

pubnub.subscribe({
  channel: chnl,
  message: function(m){
    var msg = $.parseJSON(m);
    processMessage(msg);
  }
);