RxJava 操作符

什么是rxjava?

是一种事件驱动的基于异步数据流的编程模式,整个数据流就像一条河流,它可以被观测(监听),过滤,操控或者与其他数据流合并为一条新的数据流。

三要素

  • 被观察者(Observable)
  • 观察者(Observer)
  • 订阅(subscribe

Rxjava原理 基于 一种扩展的观察者模式的响应式编程框架
RxJava原理可总结为:被观察者 (Observable) 通过 订阅(Subscribe) 按顺序发送事件 给观察者 (Observer), 观察者(Observer) 按顺序接收事件 & 作出对应的响应动作

Rxjava的扩展观察者模式中有4个角色:
在这里插入图片描述

使用

Observable.create(new ObservableOnSubscribe()) //创建一个事件流,参数是我们创建的一个事件源
		 .map(...)//有时我们会需要使用操作符进行变换
		 .subscribeOn(Schedulers.io())//指定事件源代码执行的线程
		 .observeOn(AndroidSchedulers.mainThread())//指定订阅者代码执行的线程
		 .subscribe(new Observer())//参数是我们创建的一个订阅者,在这里与事件流建立订阅关系


Observable.create(new ObservableOnSubscribe<String>() {
            //1.创建被观察者 & 生产事件
            @Override
            public void subscribe(ObservableEmitter<String> emitter) throws Exception {
                emitter.onNext("2");
                emitter.onNext("1");
                emitter.onNext("3");
                emitter.onComplete();
            }
        }).subscribe(new Observer<String>() {
            //2.通过订阅(subscribe)连接观察者和被观察者
            //3.创建观察者 & 定义响应事件行为


            /**
             *  默认最先调用复写的 onSubscribe()
             * @param d
             */
            @Override
            public void onSubscribe(Disposable d) {
                Log.i("TAG", "开始采用subscribe连接---默认最先调用复写的 onSubscribe()");
            }


            @Override
            public void onNext(String s) {
                Log.i("TAG", "对Next事件 " + s + " 作出响应");
            }


            @Override
            public void onError(Throwable e) {
                Log.i("TAG", "对Error事件作出响应");
            }


            @Override
            public void onComplete() {
                Log.i("TAG", "对Complete事件作出响应");
            }
        });

操作符

  1. 创建操作符 :创建被观察者(Observable)对象&发送事件
    在这里插入图片描述

  2. 转换操作符:变换被观察者(Observable)发送的事件。将Observable发送的数据按照一定的规则做一些变换,然后再将变换的数据发射出去。变换的操作符有map,flatMap,concatMap,switchMap,buffer,groupBy等等。
    在这里插入图片描述

  3. 合并操作符:组合多个被观察者(Observable)&合并需要发送的事件。包含:concatMap(),concat(), merge(),mergeArray(),concateArray(),reduce(),collect(),startWith(),zip(),count()等
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/531774a9c556420bae35742f824499f2.png

  4. 功能操作符:辅助被观察者(Observable) 发送事件时实现一些功能性需求,如错误处理,线程调度。
    在这里插入图片描述

  5. 过滤操作符:用于将Observable发送的数据进行过滤和选择。让Observable返回我们所需要的数据。过滤操作符有buffer(),filter(),skip(),take(),skipLast(),takeLast(),throttleFirst(),distainctUntilChange()。

在这里插入图片描述

官网
代码

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值