RxJava2 onNext()多次调用了?

时间:2018-07-11 08:28:27

标签: android kotlin rx-java2 rx-kotlin2

我有一个返回像这样的Observable的方法:

open fun get(): Observable<Response> {

    return if (condition)
        getDataFromApi()
    else
        getDataFromDb()

}

,并按以下方式订阅:

                get()
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(/*a object of class extending DefaultObserver*/)

当调用getDataFromDb()并在一段时间后根据条件调用getDataFromApi()时,我面临着这个问题。对于第一次调用,它工作正常,但是在第二次调用onNext时,使用getDataFromDb()的旧数据响应多次调用onNext。请让我知道我在做什么错。我对RxJava有点陌生。

1 个答案:

答案 0 :(得分:1)

如果getDataFromDb()正在发射项目并且调用了getDataFromApi(),则第一个方法将继续发射直到完成。如果不再需要该流,则应该取消订阅该流,并在源中添加条件,以便在观察到的未订阅状态下停止发射。

还请记住,在订阅流之前,可观察对象内部的功能不会运行。