1

原始 observable ------a--------b--------c----------d-------->....
映射observable -----A--------B(finish)
简单代码如下:

  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此指定条件下完成映射的 observable?

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"

4

1 回答 1

2

使用takeWhile,它完全符合您的需要。

于 2016-03-26T09:18:02.337 回答