代码之家  ›  专栏  ›  技术社区  ›  hackp0int

使用RxJS实现angularjs模块间通信的消息总线

  •  2
  • hackp0int  · 技术社区  · 8 年前

    我可以在angulajs应用程序中使用RxJS创建发布/订阅消息消息队列吗。例如,我有两个模块: 模块 模块B 它们作为单独的npm包存在,但在ModuleC中连接-它是主外壳。

    我不想创建模块化的依赖关系,也不想在模块之间创建紧密耦合。因此,我的想法是使用RxJS创建消息总线。 有可能吗?

    我假设API将如下所示: RxQueue.subscribe("name:of:the:queuemessage", handler => { handler.result } ); RxQueue.create("name:of:the:queuemessage", (observer) => { // implementation of usual Rx subscribtion })

    2 回复  |  直到 8 年前
        1
  •  1
  •   Tom    7 年前

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

    rxmqjs/rxmq。js:基于RxJS的JavaScript发布/订阅库
    https://github.com/rxmqjs/rxmq.js
    https://www.npmjs.com/package/rxmq

    角度不是很具体,但我认为这是件好事。

        2
  •  0
  •   KwintenP    8 年前

    这可能不是您想要的,但是为了在不同组件和模块之间共享状态和数据,您可以使用redux/ngrx存储。

    Redux是一种可以向存储发送状态的架构。如果有什么变化,商店将更新自己并通知所有收听它的人。

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

    http://redux.js.org/ 更多信息。