前言
dojo / topic
提供了一个集中的中心,用于
按主题发布
和
订阅全局消息
。可以通过使用订阅主题
topic.subscribe()
,并且可以使用发布消息
topic.publish()
。这种机制特别适合异步操作,类似于ES6中的Promise。
由于主题未绑定到特定对象,因此它们对于多个实例或各种不同类型的对象之间的通信非常有用。
subscribe()
subscribe()
返回一个句柄,该句柄具有
remove()
可用于删除侦听器的方法。
publish()
发布一个主题,然后将参数发送给每个侦听器。
示例代码
require(["dojo/topic", "dojo/dom", "dojo/on", "dojo/domReady!"],
function(topic, dom, on){
var handle = topic.subscribe("some/topic", function(e){
dom.byId("output").innerHTML = "I received: " + e.msg;
handle.remove();
});
on(dom.byId("publish"), "click", function(){
topic.publish("some/topic", { msg: "hello world" });
});
});