Rxjava中链式调用怎么实现的?
Observable.just("a") //Observable1
.map(new Func1() { //Observable2
@Override
public String call(String s) {
System.out.print(Thread.currentThread().getName() + ":first--" + s +"\n");
return s + s;
}
})
.subscribe(new Subscriber() { //代码⑥ Subscriber
@Override
public void onCompleted() {
System.out.print(Thread.currentThread().getName()+"\n");
System.out.print("completed"+"\n");
}
@Override
public void onError(Throwable e) {
System.out.print("error");
}
@Override
public void onNext(String s) {
System.out.println(s);
}
});
}
先说说自己的理解,若把整个链条看成一个整体对象,那么just创建被观察者对象,而subscribe()里的Subscriber作为观察者;若每一步都分开看,just()和subscribe()中间的操作符即是观察者,又是被观察者。
Observable中每个操作符基本都会创建出一个新的Observable;因此可以解理成后一级的操作符去观察前一个Observable对象;以上例来说,.subscribe的Subscriber所观察的对象就是.map返回的Observable2,而.map的Subscriber所观察的对象就是 Observable.just("a")得到的对象Observable1;
下面介绍实现代码,整个链式调用真正开始的