RxJAVA里面的switchMap操作符问题

看博客的时候发现这么一个问题
按照我的理解的话,这个输出应该是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);
        }
    });