【问题标题】:Using RxJS to implement MessageBus for communication between angularjs modules使用 RxJS 实现 MessageBus 用于 angularjs 模块之间的通信
【发布时间】:2017-02-20 03:07:47
【问题描述】:

我可以在 angulajs 应用程序中使用 RxJS 创建一个发布/订阅消息队列吗?例如,我有两个模块: 模块A 模块B 它们作为单独的 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 })

【问题讨论】:

标签: angularjs message-queue rxjs message-bus


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

    结帐http://redux.js.org/ 了解更多信息。

    【讨论】:

    • 嗨,感谢您的回答-但我实际上正在寻找队列行为。我正在考虑一个 redux 实现,但我的具体实现开销很大。并且将它与 angularjs (ng1) 一起使用它实际上是多余的。但是,如果您能够向我展示一个很好的工作示例,我会重新考虑它。当然,如果这对你来说不麻烦的话。
    猜你喜欢
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多