Android RxJava 的源码解析 (五) RxJava1 Lift操作符

介绍

只是慕客网 RxJava 学习笔记,个人复习使用

lift 操作符

我们这里先抛出概念

  • 接口原OnSubscribe和当前的Operator
  • 创建一个新的OnSubscriber并返回新的Observable
  • 用新的 Subscriber 包裹旧的 Subscriber
  • 在新的 Subscriber 力做完变换后再传给旧的Subscriber

小案例

Subscription subscription = Observable.create(new Observable.OnSubscribe<String>() {
    @Override
    public void call(Subscriber<? super String> subscriber) {
        if (!subscriber.isUnsubscribed()) {
            subscriber.onNext("1");
            subscriber.onNext("2");
            subscriber.onCompleted();
        }
    }
}).map(new Func1<String, Integer>() {
    @Override
    public Integer call(String s) {
        return Integer.valueOf(s);
    }
}).subscribe(new Observer<Integer>() {

    @Override
    public void onCompleted() {
        System.out.println("onCompleted");
    }

    @Override
    public void onError(Throwable e) {
        e.printStackTrace();
        System.out.println("onError");

    }

    @Override
    public void onNext(Integer s) {
        System.out.println("onNext:" + s);
    }
});

执行流程分析

源码自己分析,我们这里主要罗列下逻辑图

https://www.processon.com/view/link/5afcdd73e4b096c6eeb4b443

猜你喜欢

转载自blog.csdn.net/qq_30889373/article/details/80348564