如何在内部重试时刷新可观察的参数

时间:2018-04-26 17:39:09

标签: android kotlin rx-java retrywhen

我试图在重新启动时实现autoLogin函数,并且需要在自动登录完成后更改上一个observable的参数。

所以我创建了一个函数

class TestClass(): Function<Flowable<out Throwable>, Flowable<*>> {
    override fun apply(flowable: Flowable<out Throwable>): Flowable<*> {
        return flowable
                .flatMap {
                    if (it is HttpException && it.code() == 401 ) {
                        Timber.d("apply: Doing AutoLogin.")
                        dataSource
                                .login(document, password)
                                .map {
                                    //Auto login done, update user
                                }
                                .doOnError({ 
                                    // login failed
                                })
                                .toFlowable()
                    } else {
                        Flowable.error(it)
                    }
                }
    }
}

并以这种方式应用:

dataSource.apiCall(user)            
            .retryWhen(TestClass())
            .subscribe()

也是这样尝试的:

    Single.defer { 
                dataSource.apiCall(user)            
                    .retryWhen(TestClass())
            }
            .subscribe()

}

问题是,在重试请求后登录后,用户不会更新。

我做错了什么?

0 个答案:

没有答案