我有以下代码:
repo.getObservable()
.timeout(1, TimeUnit.MINUTES)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnSubscribe {
_isInProgress.value = true
}
.doFinally {
_isInProgress.value = false
}
.subscribe(
{
Timber.d("Success")
},
{
Timber.e(it)
})
.trackDisposable()
问题是我在几秒钟后成功收到成功消息,但我的预加载器仍然等待 1 分钟,然后订阅的错误部分被执行。这是预期的行为吗?如果订阅的成功部分被执行,我该怎么做才能停止超时?
P。 S. 从 getObservable() 返回的 Observable 是这样创建的:PublishSubject.create()
最佳答案
如果您需要一个结果,请在 timeout
之前或之后使用 take(1)
:
repo.getObservable()
.take(1) // <---------------------------------------------
.timeout(1, TimeUnit.MINUTES)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnSubscribe {
_isInProgress.value = true
}
.doFinally {
_isInProgress.value = false
}
.subscribe(
{
Timber.d("Success")
},
{
Timber.e(it)
})
.trackDisposable()
关于android - subscribe成功执行后rxjava定时器抛出超时异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59405736/