【问题标题】:Dojo's publish/subscribe - How to subscribe to multiple topicsDojo 的发布/订阅 - 如何订阅多个主题
【发布时间】:2015-10-06 07:28:03
【问题描述】:

我使用的是DOJO 1.10.4,我需要在主题a,b,c广播后运行一个方法。类似于 promise dojo/promise/all

DOJO有这个功能吗,知道怎么解决吗?

Module A
topic.publish('a');

Module B
topic.publish('b');

Module C
topic.publish('c');

【问题讨论】:

    标签: javascript dojo publish-subscribe


    【解决方案1】:

    Dojo 没有为此内置任何东西,但是构建一些您甚至可以使用 with 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) {
        // ...
    });
    

    请记住,发布/订阅本质上不会为订阅者排队发布 - 也就是说,如果主题在订阅者连接之前发布,则该发布将完全被忽视。主题也可以发布多次,而上面的方法只监听调用createTopicPromise 之后的第一次发布(因为承诺只解决或拒绝一次)。

    【讨论】:

      猜你喜欢
      • 2017-05-07
      • 2020-09-20
      • 2016-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-14
      • 2014-01-21
      • 1970-01-01
      相关资源
      最近更新 更多