【问题标题】:how to use retryWhen() Rxandroid如何使用 retryWhen() Rxandroid
【发布时间】:2018-06-13 16:43:45
【问题描述】:

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

【问题讨论】:

  • RetryWhen 操作符响应来自源 Observable 的 onError 通知并决定是否重新订阅并重新生成新的 observable。

标签: java android recursion rx-java2 rx-android


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2019-05-01
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    相关资源
    最近更新 更多