如何将一个observable转换为一个可能?

时间:2018-03-17 14:56:13

标签: rx-java2

为了完成类似的事情,添加了rxjava2新的便捷方法。

  • toSingle()会将发出单个项目的Observable转换为发出该项目的Single

  • toObservable()将Single转换为Observable,发出Single发出的项目,然后完成

如何将Observable转换为Maybe

(来源:http://reactivex.io/documentation/single.html

1 个答案:

答案 0 :(得分:8)

您不能直接将Observable转换为Maybe,因为它不知道在该上下文中要发出什么:它是第一个元素吗?最后?对元素进行一些处理的产物?

然而,您可以决定并做您想做的事情:

final Observable<Boolean> sourceBooleans = Observable.just(true, true, false);
final Maybe<Boolean> firstMaybe = sourceBooleans.firstElement();
final Maybe<Boolean> lastMaybe = sourceBooleans.lastElement();
final Maybe<Boolean> secondMaybe = sourceBooleans.elementAt(1);

final Observable<Integer> sourceNumbers = Observable.just(1, 2, 3, 4);
final Maybe<Integer> firstEven = sourceNumbers
    .filter(it -> it % 2 == 0)
    .firstElement()

您可以在Maybe implementation

中查看哪些方法返回Observable

请注意,您不能直接从Observable转到Single,也不能选择它应该发出的内容:toSingle类中没有Observable,但方法而是返回Single(例如first()last()等)