使用RxJS实现MessageBus以在angularjs模块之间进行通信

时间:2016-10-11 14:25:23

标签: angularjs message-queue rxjs message-bus

我可以在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 })

2 个答案:

答案 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/了解详情。