Скажем, у меня есть приложение для обмена мгновенными сообщениями, которое воспроизводит звуковой сигнал каждый раз, когда приходит сообщение. Я хочу debounce
звуковые сигналы, но я бы хотел воспроизвести звуковой сигнал для первого сообщения, а не для следующих (в секундах, скажем, 2 секунды).
Другим примером может быть: мое приложение отправляет ввод уведомлений (так что пользователь, с которым я общаюсь, может видеть, что я набираю сообщение). Я хочу отправить уведомление о наборе текста, когда я начну вводить текст, но только отправлю новые в течение X-секундных интервалов, поэтому я не отправляю уведомление о наборе для каждого символа, который я печатаю.
Это имеет смысл? Есть ли для этого оператор? Может ли быть достигнуто с существующими операторами?Это мой код для первого примера. Теперь я решаю это с помощью debounce
, но это не идеально. Если я получаю 1000 сообщений с интервалом в 1 секунду, он не будет воспроизводить звук до тех пор, пока не поступит последнее сообщение (я хотел бы воспроизвести звук на первом).
self.messagesHandler.messages
.asObservable()
.skip(1)
.debounce(2, scheduler: MainScheduler.instance)
.subscribeNext { [weak self] message in
self?.playMessageArrivedSound()
}.addDisposableTo(self.disposeBag)
Спасибо!