.concatMap()启动下一个Observable但前一个没有完成

时间:2018-02-21 11:49:06

标签: java android rx-java concatmap

我在Android上使用RxJava。 我在这里有一段相当简单的代码: 可观察到的> observable =

Observable.create((ObservableOnSubscribe<Observable<Boolean>>) emitter1 -> {
                            emitter1.onNext(doSomething());
                            emitter1.onComplete();
                        }).concatMap(accessToken -> Observable.create((ObservableOnSubscribe<Observable<Boolean>>) emitter2 -> {                                                            
                            emitter2.onNext(doSomethingElse());
                            emitter2.onComplete();
                        }).observeOn(Schedulers.io()).subscribeOn(Schedulers.io()));

我想做什么=&gt;

-> Start A
    -> A is processing
    -> A is ending
-> Start B
    -> B is processing
    -> B is ending

我实际上得到了什么:

-> Start A 
   -> A is processing
-> Start B
   -> B is processing
-> A is ending
-> B is ending 

但是我认为concatMap正在等待第一个观察者在推出下一个观察之前结束......?

1 个答案:

答案 0 :(得分:0)

请尝试这样:

Observable.create((ObservableOnSubscribe<Observable<Boolean>>) emitter1 -> {
                            emitter1.onNext(doSomething());
                            emitter1.onComplete();
                        }).concatMap(accessToken -> Observable.create((ObservableOnSubscribe<Observable<Boolean>>) emitter2 -> {                                                            
                            emitter2.onNext(doSomethingElse());
                            emitter2.onComplete();
                    })).observeOn(Schedulers.io()).subscribeOn(Schedulers.io());