У меня есть BehaviorRelay
настройка для хранения массива адресов, а затем я наблюдаю, что BehaviorRelay
, чтобы я мог создать массив MKAnnotation
и затем отобразить его на карте.
let addresses = BehaviorRelay<[Address]>(value: [])
Я делаю сетевые запросы, когда пользователь перемещает карту в новую область.Если пользователь перемещает карту очень быстро, я могу получить несколько сетевых запросов
. Мне нужен только самый последний ответ.
Вот здесь и начинается моя проблема.
addresses.asObservable().subscribe(onNext: { [unowned self] (value) in
self.fetchAllAnnotationsAndAddToMap()
}).disposed(by: disposebag)
fetchAllAnnotationsAndAddToMap
вызывается при каждой установке адресов.
fetchAllAnnotationsAndAddToMap
может занять много времени.Запросы на выполнение fetchAllAnnotationsAndAddToMap
складываются, и все они выполняются до завершения.
То, что я хочу сделать, - это когда однажды установлен addresses
, я хочу, чтобы все предыдущие вызовы были отброшены и использовать толькосамое позднее.
Я слышал, что это то, для чего flatMapLatest
.
Однако, flatMapLatest требует, чтобы я вернул наблюдаемое, и меня это смущает.
Какотменить методы, вызываемые после обновления BehaviorRelay
, и использовать только самые последние?