2016-05-30 3 views
2

Возможно ли иметь вид BehaviorSubject с переключателями паузы и возобновления? Что-то вроде PausableBehaviorSubject.pause() и PausableBehaviorSubject.resume()? Как это можно сделать?Pausable BehaviorSubject?

Идея состоит в том, что при приостановке объект не пересылал события, полученные через PausableBehaviorSubject.onNext(), а вместо этого сохранял только последний. После возобновления (или после подписки, если не приостановлено), PausableBehaviorSubject отправит сохраненное последнее событие (если оно есть) и переадресует последующие события его подписчику (ами).

+0

что-то вроде этого: 'subject.filter (i ->! IsPaused) .replay (1) .autoconnect()'? (не проверено.) – dwursteisen

+0

не можете ли вы просто «подписаться» и «отписаться» вместо «возобновить» и «приостановить»? –

+0

@SamuelGruetter проблема в том, что вы позволите наблюдателю контролировать, когда он будет получать обновления, а когда нет. С наблюдаемой паузой можно было бы инкапсулировать, и, таким образом, приостановка/возобновление будет оставаться вне досягаемости наблюдателя. –

ответ

0

Существует оператор, который позволяет вам это делать. Он называется pausableBuffered. Вы можете увидеть анимацию по адресу: RxMarbles.

Ваш наблюдатель или субъект просто упакует исходное наблюдаемое, добавит новое булевое наблюдаемое и перевернет переключатель, предоставив значение true или false для вашего нового наблюдаемого.

Смежные вопросы