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
来解决
有一个简短的问题:我有一个 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