RxJava,在链接两个observable之前在观察者线程中执行代码

Dr *_*ind 7 android rx-java rx-android

我正在使用RxJava和RxAndroid,我想要组合两个observable,但在两者之间我需要更新UI,所以我必须在到达订阅者之前在主线程中执行代码.

一个解决方案,而不是flatmapping(是一个被接受的术语?)两个observable,就是在更新UI之后调用订阅者中的下一个observable,但我觉得应该有一个更优雅的解决方案,如:

myObservable
    .map(new Func1<Object, Object>() {
        @Override
        public Object call(Object object) {
            /* do stuff on the main thread */
            return object;
        }
    })
    .flatMap(new Func1<Object, Observable<OtherObject>>() {
        @Override
        public Observable<OtherObject> call(Object o) {
            return new MyOtherObservable(o);
        }
    })
    .subscribeOn(Schedulers.newThread())
    .observeOn(AndroidSchedulers.mainThread());
Run Code Online (Sandbox Code Playgroud)

当然,可能map不是我需要在这里使用的运算符.那么,是否有运营商或更好的方法来实现这一目标?或者我错过了关于观察者应该如何工作的观点?

dwu*_*sen 4

Rxjava 有一个 doOnNext 运算符,这就是您正在寻找的。

  • ObserveOn 不应在 doOnNext 之前调用 (7认同)