Rxjs 行为主体“分组”

Rxjs 行为主体“分组”,rxjs,Rxjs,我刚刚开始使用RXJS,看看它是否可以取代我目前的手动数据流。我尝试移植的一件事是,流中的最后一个值会被记住,因此未来的观察者总是会得到“当前”值以及后续值。这似乎是由行为主体实现的 但是,我需要为一组实体执行此操作。例如,我可能有表示来自用户的消息的数据: { userId: 1, message: "Hello!" } 我想要一个像BehaviorSubject的对象,它将为所有用户存储最后一条消息。这是我可以用RXJS开箱即用做的事情,还是我需要自己做?如果是这样,请提供任何建议 编辑:

我刚刚开始使用RXJS,看看它是否可以取代我目前的手动数据流。我尝试移植的一件事是,流中的最后一个值会被记住,因此未来的观察者总是会得到“当前”值以及后续值。这似乎是由行为主体实现的

但是,我需要为一组实体执行此操作。例如,我可能有表示来自用户的消息的数据:

{ userId: 1, message: "Hello!" }
我想要一个像BehaviorSubject的对象,它将为所有用户存储最后一条消息。这是我可以用RXJS开箱即用做的事情,还是我需要自己做?如果是这样,请提供任何建议


编辑:经过进一步思考,也许有一个“传入”主题,一个更新地图的观察者,然后有一个我可以调用的函数,该函数可以从地图值初始化一个可观察对象,并与传入流合并…?

我使用RxJS和类似redux的状态设置。我有一个保存当前状态的BehaviorSubject,每次触发事件/操作时,当前状态都会通过生成新状态的函数传递,主体会订阅新状态

以下是我使用的简化版本:

export default class Flux {

  constructor(state) {
    //all resources are saved here for disposal (for example, when hot loading)
    //this is just a flux dispatcher
    this.dispatcher = new rx.Subject(),
    // BehaviorSuject constructed with initial state
    this.state = new Rx.BehaviorSubject(state),
  }

  addStore(store, initialState, feature = store.feature) {
      this.dispatcher
        .share()
        // this is where the "reduction" happens. store is a reducer that 
        // takes an existing state and returns the new state
        .flatMap(({action, payload}) =>
            store(this.state.getValue(), action, payload))
        .startWith(initialState || {})
        .subscribe(this.state)
    );

    return this;
  }

  addActions(actions: rx.Subject) {
    // actions are fed to the dispatcher
    this.resources.push(actions.share().subscribe(this.dispatcher));
    return this;
  }

}

我创建了一个具有管理状态的全局通量对象。然后,对于每个功能或页面或任何我希望的内容,我都会添加操作和存储。它使管理状态变得非常简单,而时间旅行等事情是Rx提供的。

订阅上的预期行为是什么?是否将所有对象收集到单个对象中?或者你要为每个对象发出最新的状态?老实说,我不确定它应该如何工作。在订阅时,我希望所有用户的所有最新消息,这些消息可能必须单独发出,因此如果有四个用户,则四条消息将与他们的最后一条消息一起单独发出,此后,新消息到达时将发出消息。这将有助于为所有用户呈现“当前”消息的初始列表,例如,即使这是在收到一些消息之后发生的。听起来像是一个很好的用例。但我不确定你是否真的想通过无穷大。。。