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