2

我订阅了主题树,并使用它来更新 HTML 表中的值。有时会添加新的子主题并删除旧的子主题。我需要保持 UI 同步,当未知主题的值到达时会检测到新主题,但我无法发现订阅主题何时被删除。

如何检测主题何时被删除?

4

1 回答 1

2

如果您使用诸如的主题选择器订阅主题树?myTopicTreeRoot//,那么当您发出此订阅调用时,您还可以说明在取消订阅和订阅的情况下会发生什么,例如:

session.subscribe("?myTopicTreeRoot//").on({
    open: function(subscription) {
        console.log('Opened subscription for: ' + subscription.selector);
    },
    update : function(update, topic) {
        console.log('Update for ' + topic + ' : ' + update);
    },
    subscribe : function(details, topic) {
         //This will notify you of every new subscription to a topic in your subtree
        console.log('Subscribed to : ' + topic);
    },
    unsubscribe : function(reason, topic) {
        //This will notify you of every unsubscription from a topic in your subtree
        console.log('Unsubscribed from : ' + topic);
    }
});

属性函数subscribeunsubscribe为主题myTopicTreeRoot和任何后代调用,例如myTopicTreeRoot/foo/bar/baz.

重要的是:当主题被删除时,任何订阅都会结束,而主题又会调用unsubscribe.

请注意,最好使用subscribe属性函数。如果订阅无状态主题,则使用第一次调用来update暗示新主题的存在是不明智的。

于 2016-05-26T07:49:44.087 回答