我使用RXJava调用一个开销很大的递归函数。大多数情况下,它运行得非常快,但有时会产生过长的耗时
如果线程仍在运行,有没有办法在5秒后使用retryWhen()?
observable = getObservable(); ///Runs a recursive function
mObserver = getSudokuPuzzleObserver();
observable.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.retryWhen() // How to use retryWhen onNext() isn't called in 5 seconds
.subscribe(mSudokuPuzzleObserver);发布于 2018-01-04 09:28:39
我不知道它是否适合你的解决方案,但我想像这样
Observable observable = getObservable();
observable.timeout(5, TimeUnit.SECONDS)
.retry(e -> e instanceof TimeoutException)
.subscribe(mSudokuPuzzleObserver);如果observable在5秒内没有发射任何东西,timeout将抛出异常,如果错误是由超时引起的,onError将重试完全相同的observable。
https://stackoverflow.com/questions/48087023
复制相似问题