我订阅了一个主题树,并使用它来更新HTML表格中的值。有时会添加新的子主题并删除旧的子主题。我需要保持我的UI同步,当值到达未知主题时检测到新主题,但我无法发现订阅主题何时被删除。
如何检测主题何时被删除?
答案 0 :(得分: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);
}
});
订阅主题树,那么当您发出此订阅电话时,您还可以说明取消订阅时会发生什么情况,以及作为订阅,例如:
subscribe
属性函数unsubscribe
和myTopicTreeRoot
会针对主题myTopicTreeRoot/foo/bar/baz
以及任何后代(如unsubscribe
。
重要:删除主题后,任何订阅都会结束,然后调用update
。
请注意,最好使用topic selector属性函数。如果订阅无状态主题,使用对{{1}}的第一次调用暗示存在新主题是不明智的。