RxJava2 - observable.subscribe onComplete是Action类型

时间:2017-09-22 10:18:44

标签: java rx-java2

在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类型的任何原因?

1 个答案:

答案 0 :(得分:3)

原因是onComplete不会发出任何数据。消费者需要一个类型。如果某件事情已经完成,那就完成了。

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

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