天天看点

dojo/topic 笔记

前言

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

});
           

继续阅读