2

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

4

2 回答 2

1

我认为这可能最接近您的要求:

rxmqjs/rxmq.js:基于 RxJS 的 JavaScript pub/sub 库
https://github.com/rxmqjs/rxmq.js
https://www.npmjs.com/package/rxmq

不是角度特定的,但我认为这是一件好事。

于 2017-11-29T14:16:46.007 回答
0

它可能不是您正在寻找的,但是为了在不同的组件和模块之间共享状态和数据,您可以使用 redux/ngrx-store。

Redux 是一种架构,您可以在其中将状态发送到存储。商店将自行更新,并在发生变化时通知所有收听它的人。

所以你的模块既可以订阅商店也可以监听事件。如果他们想交流,他们可以向商店发送消息。如果有变化,商店会通知所有收听的人。一个区别是这个存储对象实际上将这个对象存储为一个临时数据库。这不是真正的排队行为。

查看http://redux.js.org/了解更多信息。

于 2016-10-11T15:04:09.957 回答