Home Articles

RxSwift flatMap最新一次没有处理

Asked
Viewed 1025 times
0

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

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

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

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

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

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

1 Answer

Related