如何在 RxScala/Java 处取消具有指定条件的映射 Observable?
How to cancel a mapped Observable with specify condition at 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]
作为 paramter.See 定义,
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"
使用takeWhile
,它正是您所需要的。
原始可观察性------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]
作为 paramter.See 定义,
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"
使用takeWhile
,它正是您所需要的。