在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>

关于java - RxJava2-observable.subscribe onComplete是操作类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46362348/

10-09 03:25