RxJava2 - observable.subscribe onComplete 是 Action 类型

RxJava2 - observable.subscribe onComplete is Action type

在 RxJava2 中你不能做这样的事情

    observable.subscribe(s -> {
        System.out.println(s);
    }, e -> {
        System.err.println(e);
    }, c -> {
        System.err.println(c);
    });

因为 c-> {} 不是 Action 类型(显然)

相反,你被迫做这样的事情

    Action onComplete = new Action() {
        @Override
        public void run() throws Exception {
            System.out.println("on complete");
        }       
    };
    observable.subscribe(s -> {
        System.out.println(s);
    }, e -> {
        System.err.println(e);
    },onComplete);

为什么 onComplete 不是 Consumer 类型?

原因是 onComplete 没有发出任何数据。消费者需要类型。如果某事完成了,它就完成了。

如果你有一个 Completable 它只调用 onComplete() 也没有发出数据。

onCompleted 真正意味着完成。 onNext/onSuccess 表示它有 Consumer<Type> 发出的数据,而 onError 表示它有 Consumer<Throwable>