如何将OnComplete和OnError事件作为可观察项发出?

时间:2018-08-06 05:35:14

标签: rx-java

我想从Observable创建Completable,并发出Completable的OnErrorOnComplete事件。

事件示例:

    private sealed class Result {

        class Success : Result()

        class Error(val errorMessage: String) : Result()
    }

OnError事件应该映射到ErrorOnCompleteSuccess

我了解如果可观察到的发出错误事件,则如何发出Error

val completable = ...
completable.
    .toObservable<Result>()
    .onErrorReturn { error -> Result.Error(error.message.orEmpty()) }

但是我找不到发出OnComplete事件的解决方案。 使用标准的RxJava运算符可以实现吗?

1 个答案:

答案 0 :(得分:0)

使用.materialize()函数。

例如这样的例子:

Completable.complete()
        .toObservable<Result>()
        .materialize()
        .map {
            when {
                it.isOnError -> 1
                it.isOnComplete -> 0 
                else -> 2 // not present in Completable
            }
        }