在RxJava

时间:2018-04-01 21:04:49

标签: android kotlin rx-java

试图在Managing State with RxJava

中关注杰克沃顿的例子

我的代码工作正常没有 startWith运算符,但是只要我添加它,就只会发出startWith项,而其余的链不会执行。

这是调用函数:

compositeDisposable.add(
            Observable
                .just(myUpdateProfileEvent)
                .compose(update())
                .subscribe({ state.value = it }, { Timber.e(it) })
)

我的变压器:

fun update(): ObservableTransformer<UpdateProfileEvent, ProfileModel> {
    return ObservableTransformer {
        it.flatMap {
            api
                .updateUser( … user params …)
                .subscribeOn(Schedulers.io())
                .doOnNext { saveUser(it) }
                .map { ProfileModel.UpdateSuccessful(it) as ProfileModel }
                .onErrorReturn { ProfileModel.UpdateError(it) as ProfileModel }
                .observeOn(AndroidSchedulers.mainThread())
                .startWith { ProfileModel.UpdateInProgress() as ProfileModel } <--- This is the line in question
        }
    }

如果删除.startWith行,则一切都按预期执行。

但是,添加.startWith后,只会发出ProfileModel.UpdateInProgress(),之后不会发出任何其他内容 - api.updateUser()等永远不会被执行。

帮助!

由于

0 个答案:

没有答案