Если бы быстрый вопрос: У меня есть Variable<[Session]>
, где Session
:RxSwift flatMap последний один раз без утилизации
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() }
, но я только хочу, чтобы просить каждую сессию один раз. Есть два способа, которые я вижу в том, что не удалось выполнить мою текущую реализацию: 1. flatMapLatest получает новый массив сеансов, потенциально удаляя запрос с сервера, который все еще выполняется. 2. rx_serverRequestable вызывается каждый раз, когда сессия имеет всю информацию, необходимую для загружаться с сервера, поэтому он будет вызываться несколько раз, каждый раз, когда сеанс загружается в любую новую информацию. Я только хочу, чтобы сессия была запрошена в первый раз, следует ли использовать что-то вроде .multicast
или .replay(1)
?
любые указатели на решение двух проблем или переключение моего подхода?
Что вы планируете делать с результатом, вырабатываемым 'sessions.flatMapLatest ... flatMap' называть? –
Назначьте информацию, полученную с сервера, обратно в переменные экземпляра на сеансе – AndrewSB