RxSwift flatMap最新一次没有处理

时间:2016-09-27 23:41:57

标签: swift reactive-programming rx-swift

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

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

每次会话都有需要传递给后端的所有信息时发出.next事件,我希望能够在会话数组上flatMapLatest,并执行以下操作:< / p>

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

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

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

1 个答案:

答案 0 :(得分:0)

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

来解决