gpt4 book ai didi

javascript - Dojo 的发布/订阅 - 如何订阅多个主题

转载 作者:行者123 更新时间:2023-12-02 15:35:43 25 4
gpt4 key购买 nike

我使用的是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');

最佳答案

Dojo 没有为此内置任何东西,但是构建一些您甚至可以将其与您使用的 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 只解析或拒绝一次)。

关于javascript - Dojo 的发布/订阅 - 如何订阅多个主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32964138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com