首页 文章

如何使用retryWhen()Rxandroid

提问于
浏览
1

我使用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);

1 回答

  • 1

    我不知道它是否适合你的解决方案,但我想到了类似的东西

    Observable observable = getObservable();
        observable.timeout(5, TimeUnit.SECONDS)
                .retry(e -> e instanceof TimeoutException)
                .subscribe(mSudokuPuzzleObserver);
    

    如果observable在5秒内没有发出任何内容, timeout 将抛出异常,如果错误是由超时引起的,它将重试完全相同的observable .

相关问题