RxSwift flatMap 最新一次无配置

RxSwift flatMap latest one time without disposing

有一个简短的问题:我有一个 Variable<[Session]>,其中 Session

class Session {
  ...
  var rx_serverRequestable: Driver<SessionRequestable>
  ...
}

每当会话具有需要传递给后端的所有信息时,它都会发出一个 .next 事件,我希望能够 flatMapLatest 在会话数组上,并执行类似:

let sessions: Variable<[Session]>
sessions
    .flatMapLatest { sessions in sessions.map { [=11=]. rx_serverRequestable } }
    .flatMap { [=11=].requestFromServer() }

但我只想请求每个会话一次。我认为当前实施失败的原因有两种: 1. flatMapLatest 获取一组新的会话,可能处理来自仍在进行中的服务器的请求 2. 每次会话具有从服务器加载所需的所有信息时都会调用 rx_serverRequestable,因此每次会话加载任何新信息时都会调用多次。我只希望第一次请求会话,我应该使用 .multicast.replay(1) 之类的东西吗?

关于解决这两个问题或改变我的方法的任何指示?

这可以使用 zip 运算符 http://reactivex.io/documentation/operators/zip.html

来解决