Rxjava3 创建Obervable被观察者 的相关操作符

Posted 祥云湾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rxjava3 创建Obervable被观察者 的相关操作符相关的知识,希望对你有一定的参考价值。

1、create

 /**
     * creat是一个比较原始的创建Obserable的操作符
     */
    private static void test01()

        //正常调用形式
//        Observable.create(new ObservableOnSubscribe<String>() 
//            @Override
//            public void subscribe(@NonNull ObservableEmitter<String> emitter) throws Throwable 
//                emitter.onNext("emitter Obervable");
//                emitter.onComplete();
//            
//        )

        //lamda 表达式形式
        Observable.create((ObservableOnSubscribe<String>) emitter -> 
            emitter.onNext("---emitter Obervable");
            emitter.onComplete();
        ).subscribe(new Observer<String>() 
            @Override
            public void onSubscribe(@NonNull Disposable d) 
                System.out.println("onSubscribe"+d.toString());
            

            @Override
            public void onNext(@NonNull String s) 
                System.out.println("onNext"+s.toString());
            

            @Override
            public void onError(@NonNull Throwable e) 
                System.out.println("onError"+e.toString());
            

            @Override
            public void onComplete() 
                System.out.println("onComplete");
            
        );
    

执行结果:

---- IntelliJ IDEA coverage runner ---- 
sampling ...
include patterns:
com\\.example\\.test02\\.ui\\.Test\\.rxjava3\\..*
exclude patterns:
onSubscribeCreateEmitternull
onNext---emitter Obervable
onComplete
Class transformation time: 0.0136008s for 455 classes or 2.9891868131868132E-5s per class

2、just

 /**
     * just 是对creat的一个简写
     * 相当于把在onnext中写的内容写到了just里面
     */
    private static void test02()
        Observable.just("测试just创建Obserable")
        .subscribe(new Observer<String>() 
            @Override
            public void onSubscribe(@NonNull Disposable d) 
                System.out.println("onSubscribe"+d.toString());
            

            @Override
            public void onNext(@NonNull String s) 
                System.out.println("onNext"+s.toString());
            

            @Override
            public void onError(@NonNull Throwable e) 
                System.out.println("onError"+e.toString());
            

            @Override
            public void onComplete() 
                System.out.println("onComplete");
            
        );
    

执行结果:

---- IntelliJ IDEA coverage runner ---- 
sampling ...
include patterns:
com\\.example\\.test02\\.ui\\.Test\\.rxjava3\\..*
exclude patterns:
onSubscribe0
onNext测试just创建Obserable
onComplete
Class transformation time: 0.0143753s for 272 classes or 5.2850367647058824E-5s per class

3、from

rxjava2中的from已经去掉,替换成了from具体类型的方法。

a、list集合形式的调用方法:

    /**
     * from 将数据进行拆分转换
     * 可以接受列表和数组,可以转换成各种类型的对象和数据类型
     */
    private static void test03() 
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        int[] intarray=1,2,3,4,5;
        Observable.fromIterable(list).subscribe(new Observer<Integer>() 
                    @Override
                    public void onSubscribe(@NonNull Disposable d) 
                        System.out.println("onSubscribe" + d.toString());
                    

                    @Override
                    public void onNext(@NonNull Integer integer) 
                        System.out.println("onNext--" + integer.toString());
                    

                    @Override
                    public void onError(@NonNull Throwable e) 
                        System.out.println("onError" + e.toString());
                    

                    @Override
                    public void onComplete() 
                        System.out.println("onComplete");
                    
                );
    

执行结果:

---- IntelliJ IDEA coverage runner ---- 
sampling ...
include patterns:
com\\.example\\.test02\\.ui\\.Test\\.rxjava3\\..*
exclude patterns:
onSubscribeio.reactivex.rxjava3.internal.operators.observable.ObservableFromIterable$FromIterableDisposable@16f65612
onNext--1
onNext--2
onNext--3
onNext--4
onNext--5
onComplete

b、数组形式的调用方法

注意这里必须是Integer 等对象形式的数组类型。

 /**
     * from 将数据进行拆分转换
     * 可以接受列表和数组,可以转换成各种类型的对象和数据类型
     */
    private static void test04() 
//        ArrayList<Integer> list = new ArrayList<>();
//        list.add(1);
//        list.add(2);
//        list.add(3);
//        list.add(4);
//        list.add(5);
        Integer[] intarray=1,2,3,4,5;
        Observable.fromArray(intarray).subscribe(new Observer<Integer>() 
            @Override
            public void onSubscribe(@NonNull Disposable d) 
                System.out.println("onSubscribe" + d.toString());
            

            @Override
            public void onNext(@NonNull Integer integer) 
                System.out.println("onNext--" + integer.toString());
            

            @Override
            public void onError(@NonNull Throwable e) 
                System.out.println("onError" + e.toString());
            

            @Override
            public void onComplete() 
                System.out.println("onComplete");
            
        );
    

运行结果:

---- IntelliJ IDEA coverage runner ---- 
sampling ...
include patterns:
com\\.example\\.test02\\.ui\\.Test\\.rxjava3\\..*
exclude patterns:
onSubscribeio.reactivex.rxjava3.internal.operators.observable.ObservableFromArray$FromArrayDisposable@16f65612
onNext--1
onNext--2
onNext--3
onNext--4
onNext--5
onComplete
Class transformation time: 0.0157131s for 274 classes or 5.7347080291970804E-5s per class

4、defer

 

5、

 

 

 

 

 

 

以上是关于Rxjava3 创建Obervable被观察者 的相关操作符的主要内容,如果未能解决你的问题,请参考以下文章

Rxjava3 的调用方法尝鲜

Rxjava3 的调用方法尝鲜

Rxjava 整理(未完)

Rxjava 整理(未完)

Rxjava 整理(未完)

如何取消订阅 observable