Как отменить сопоставленное Observable с указанием условия в RxScala/Java?

Исходная наблюдаемая ------a-------b-------c----------d-------->....
нанесен на карту наблюдаемой -----A-------B(закончить)
Простой код как это:

  val original = Observable.just('a', 'b', 'c', 'd')
  val mapped = original.map(x => x.toUpper)
  //how to let `mapped` Observable stop emit event when received 'b' from original?
  //do something
  mapped.subscribe(x => println(x)) //make it only print A ,B

Как сделать картографию наблюдаемой законченной в B это указать условие?

ОБНОВЛЕНИЕ для метода takeUntil
takeUntil кажется стандартным ответом, но мой редактор показывает, что этот метод принимает Observable[Any] как параметр. Смотрите определение, пожалуйста,
def takeUntil(that: Observable[Any]): Observable[T]

если я использую следующий код

  val original = Observable.just('a', 'b', 'c', 'd').takeUntil(x => x == 'b')

произошла ошибка компиляции

Error:(74, 64) missing parameter type
  val original = Observable.just('a', 'b', 'c', 'd').takeUntil(x => x == 'b')
                                                           ^

Мы используем один и тот же пакет? моя sbt зависимость "com.netflix.rxjava" % "rxjava-scala" % "0.20.7"

1 ответ

Решение

Использование takeWhile, он делает именно то, что вам нужно.

Другие вопросы по тегам