再忆RxJava---Single,Maybe,Completable介绍

2020-06-02 15:30:58 浏览数 (2)

Single

Single和Observable类似,但是它主要处理单个数值,它只会返回onSuccess和onError,没有onComplete

代码语言:javascript复制
        Single.just("Hello World")
                .delay(10, TimeUnit.SECONDS, new IoScheduler())
                .subscribeWith(new DisposableSingleObserver<String>() {
                    @Override
                    public void onSuccess(String s) {

                    }

                    @Override
                    public void onError(Throwable e) {

                    }
                });
                // .subscribe(new SingleObserver<String>() {});---此方法没有返回值,所以不用

Single默认只是调用onSuccess。可以在Single.create中手动调用onError

Maybe

Maybe,也就是“或许”的意思。它是一种延迟计算,要么发射单个数据,要么不发送数据,要么发送exception onSuccess,onError和onComplete三个方法,Observable只有onError和onComplete不能同时存在,但是Maybe完全互斥(DelayMaybeObserver的run方法有) 和Single一样不能用subscribe方法,因为没有返回值

代码语言:javascript复制
        Maybe.just("Hello World")
                .delay(10, TimeUnit.SECONDS, new IoScheduler())
                .subscribeWith(new DisposableMaybeObserver<String>() {
                    @Override
                    public void onSuccess(String s) {

                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onComplete() {

                    }
                });

Completable

CompletableDelay内部类Delay的run方法可以知道,要么onError,要么onComplete 和Single一样不能用subscribe方法,因为没有返回值

代码语言:javascript复制
        Completable.complete()
                .delay(10, TimeUnit.SECONDS, new IoScheduler())
                .subscribeWith(new DisposableCompletableObserver() {
                    @Override
                    public void onComplete() {

                    }

                    @Override
                    public void onError(Throwable e) {

                    }
                });

0 人点赞