动态javascript加载和订阅基于数据的事件?

时间:2016-09-12 15:26:21

标签: javascript jquery event-handling hook pubnub

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

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

我有一堆小部件/组件,目前只包含动态加载的HTML。现在,processMessage()基本上只是说“如果消息ID是widget1那么就做一堆东西”。我想修改组件文件以包含处理所有窗口小部件数据的javascript,以及一些如何注册钩子来检测PubNub消息何时带有与窗口小部件匹配的ID。

我该怎么做?

有关详情,请参阅programmers.stackexchange.com上的this question

1 个答案:

答案 0 :(得分:1)

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

类似的东西:

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