看博客的时候发现这么一个问题
按照我的理解的话,这个输出应该是30 15 10 5啊,
因为20那个数组确实被30给舍弃了,但是怎么之后的10也不在了
Observable.just(10, 20, 30).switchMap(new Func1<Integer, Observable<Integer>>() {
@Override
public Observable<Integer> call(Integer integer) {
//10的延迟执行时间为200毫秒、20和30的延迟执行时间为180毫秒
int delay = 200;
if (integer > 10)
delay = 180;
return Observable.from(new Integer[]{integer, integer / 2}).delay(delay, TimeUnit.MILLISECONDS);
}
}).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<Integer>() {
@Override
public void call(Integer integer) {
System.out.println("switchMap Next:" + integer);
}
});
http://blog.csdn.net/axuanqq/article/details/50738464
switchMap操作符只发射最近的Observables。
Observable.just(10, 20, 30).switchMap(new Func1>() {
@Override
public Observable call(Integer integer) {
System.out.println("call :" + integer);//这里打印了10 20 30
//10的延迟执行时间为200毫秒、20和30的延迟执行时间为180毫秒
int delay = 200;
if (integer > 10)
delay = 180;
return Observable.just(integer)
.delay(delay, TimeUnit.MILLISECONDS);//call方法执行完毕,最后只返回了最后一个数据,也就是30
}
}).subscribe(new Action1<Integer>() {
@Override
public void call(Integer integer) {
System.out.println("switchMap Next:" + integer);
}
});