Я использую rx.net, и один из способов достижения этого - использование buffer
. После рассмотрения реализации RxSwift buffer
func buffer(timeSpan:count:scheduler:)
У вас есть 2 параметра:
timeSpan
в качестве таймаута count
для указания максимальных элементов буфера
Окно возвращается каждый раз, когда происходит тайм-аут или когдаМаксимальный счет достигнут.
Итак, в вашем случае просто установите тайм-аут на 10 лет или около того, и установите количество на 4. Возьмите последний элемент каждого возвращенного окна.
После импорта RxSwift
и RxCocoa
Вы можете сделать:
textView
.rx
.text
.buffer(timeSpan: 3600, count: 4, scheduler: MainScheduler.instance)
.subscribe(onNext: { (buffer) in
guard let lastestString = buffer.last as? String else { return }
print(lastestString)
})
.disposed(by: disposeBag)
ПРИМЕЧАНИЕ: disposeBag
объявлено глобально для приведенного выше примера.