直接对发射处理的事件进行处理后产生新的事件后,再次发射
下面的代码可以看到: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 SchedulerTransformr implements ObservableTransformer{
@Override
public @NonNull ObservableSource apply(Observable upstream) {
return upstream.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
}
private void testCompose() {
Observable.create(new ObservableOnSubscribe
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)