rxjava笔记(2)

2016-12-17  本文已影响30人  preCh

rxjava笔记(2)

map与flatMap的原理

map的原理,可以查看map的源码进行分析。
会发现map()其实调用了left方法
left的源码大致过程为:

return new Observable<R>(new OnSubscribe<R>() {
           @Override
           public void call(Subscriber<? super R> o) {
               try {
                   Subscriber<? super T> st = hook.onLift(operator).call(o);
                   try {
                       st.onStart();
                       onSubscribe.call(st);
                   } catch (Throwable e) {
                       if (e instanceof OnErrorNotImplementedException) {
                           throw (OnErrorNotImplementedException) e;
                       }
                       st.onError(e);
                   }
               } catch (Throwable e) {
                   if (e instanceof OnErrorNotImplementedException) {
                       throw (OnErrorNotImplementedException) e;
                   }
                   o.onError(e);
               }
           }
       });

可以看到,在left方法中,返回了一个新建的Observable对象
接下来具体分析可以看出:

同理,flatMap于map的原理差不多,只是变换成了一个Observable对象

上一篇 下一篇

猜你喜欢

热点阅读