0
我正在使用DOJO 1.10.4,我需要在主題a,b,c
廣播後運行方法。類似的承諾dojo/promise/all
。Dojo的發佈/訂閱 - 如何訂閱多個主題
DOJO是否有此功能,任何想法如何解決?
Module A
topic.publish('a');
Module B
topic.publish('b');
Module C
topic.publish('c');
我正在使用DOJO 1.10.4,我需要在主題a,b,c
廣播後運行方法。類似的承諾dojo/promise/all
。Dojo的發佈/訂閱 - 如何訂閱多個主題
DOJO是否有此功能,任何想法如何解決?
Module A
topic.publish('a');
Module B
topic.publish('b');
Module C
topic.publish('c');
道場沒有內置在這樣的東西,但它是相當瑣碎建立的東西,你甚至可以再使用與你提到dojo/promise/all
。
function createTopicPromise(topicName) {
var dfd = new Deferred(); // dojo/Deferred
var handle = topic.subscribe(topicName, function (someValue) {
handle.remove();
dfd.resolve(someValue);
});
return dfd.promise;
}
all([
createTopicPromise('a'),
createTopicPromise('b'),
createTopicPromise('c')
]).then(function (values) {
// ...
});
記住的pub/sub天然不排隊公佈的用戶 - 也就是,如果一個主題被之前的用戶被迷上了它出版,不公佈會完全被忽視。主題也可以多次發佈,而上面的方法只會在調用createTopicPromise
之後收聽第一個發佈(因爲promise只能解析或拒絕一次)。