我可以在angulajs应用程序中使用RxJS创建发布/订阅消息消息队列。我有两个模块: ModuleA ModuleB 它们作为单独的npm包存在,但在ModuleC中连接 - 它是主shell。
我不想创建作为ModuleD的依赖项,并在模块之间创建紧密耦合。所以我的想法是使用RxJS创建一个消息总线。 有可能吗?
我认为API看起来像这样:
RxQueue.subscribe("name:of:the:queuemessage", handler => { handler.result } );
RxQueue.create("name:of:the:queuemessage", (observer) => {
// implementation of usual Rx subscribtion
})
答案 0 :(得分:1)
我认为这可能与您的要求最接近:
rxmqjs / rxmq.js:基于RxJS的JavaScript pub / sub库
https://github.com/rxmqjs/rxmq.js
https://www.npmjs.com/package/rxmq
没有特定角度,但我认为这是件好事。
答案 1 :(得分:0)
它可能不是您正在寻找的,但是为了在不同组件和模块之间共享状态和数据,您可以使用redux / ngrx-store。
Redux是一种架构,您可以在其中将状态发送到商店。如果发生了变化,商店将自行更新并通知所有人收听。
因此,您的模块可以订阅商店并收听活动。如果他们想要沟通,他们可以向商店发送消息。然后商店会通知所有人,如果有什么变化,就会收听。 一个区别是这个商店对象实际上将这个对象存储为临时数据库。这不是真正的队列行为。
结帐http://redux.js.org/了解详情。