如何使用retryWhen()Rxandroid

问题描述 投票:1回答: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);
java android recursion rx-java2 rx-android
1个回答
1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.