当前位置:  开发笔记 > 编程语言 > 正文

在RXjava中应用重试

如何解决《在RXjava中应用重试》经验,为你挑选了1个好方法。

我想运行一个使用RXJava重试的方法

return Observable
        .just(myObj)
        .flatMap(doc ->
                myFunc(myObj, ....)
        )
        .doOnError(e -> log.Error())
        .onErrorResumeNext(myObj2 ->
                methodIWantToRunWithRetries(...)
                        .onErrorResumeNext(myObj3 ->
                                methodIWantToRunWithRetries(...)
                        )

        );
}

如果我使用,onErrorResumeNext我需要多次嵌套它我想重试.
(除非我想用try/catch包围它)

有没有选择用RXJava方法实现它?



1> akarnokd..:

RxJava提供标准的重试运算符,允许您重试多次,如果异常与谓词匹配或具有一些复杂的重试逻辑,则重试.前两个使用是最简单的:

source.retry(5).subscribe(...)

source.retry(e -> e instanceof IOException).subscribe(...);

后者需要组装一个二级可观测量,现在可以有延迟,计数器等附加:

source.retryWhen(o -> o.delay(100, TimeUnit.MILLISECONDS)).subscribe(...)

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有