直接对发射处理的事件进行处理后产生新的事件后,再次发射
下面的代码可以看到:map直接对 just() 操作符发射出来的事件进行拼接后,再次发射
private static void testMap() {
Observable.just("aaa")
.map(new Function() {
@Override
public Object apply(String s) throws Throwable {
return s+" + bbb";
}
}).subscribe(new Observer
2: flatMap() 操作符
适应场景:与比如多次网络请求
拿到上一个被观察者事件后,再创建一个新的被观察者,新的被观察者再次发射事件,被最终的Observer消费
private static void testFlatMap() {
Observable.just("register")
.flatMap(new Function>() {
@Override
public ObservableSource> apply(String s) throws Throwable {
System.out.println(s + "成功");
return Observable.just("login");
}
}).subscribe(new Observer
3: ConactMap() 操作符
conactMap() 操作符相比 flatMap() 操作符,它对事件的处理是顺序的
private static void testConcatMap() {
Observable.just("111","222","3333","4444")
.concatMap(new Function>() {
@Override
public ObservableSource> apply(String s) throws Throwable {
System.out.println("just被观察者事件" + s);
return Observable.just(s);
}
}).subscribe(new Observer
4:compose()操作符
简而言之可以叫做代码复用操作符, 比如将 发射线程和消费线程通过transformer来复用
public class SchedulerTransformrimplements ObservableTransformer{ @Override public @NonNull ObservableSource apply(Observable upstream) { return upstream.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } } private void testCompose() { Observable.create(new ObservableOnSubscribe



