有一个简单的问题:我有一个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)
之类的内容吗?
关于解决这两个问题的任何指示,或者改变我的方法?