【发布时间】:2020-09-28 11:47:39
【问题描述】:
我正在通过以下方式进行两次 API 调用。如果两个 API 调用中的任何一个失败,我想通过更改某些参数来重试该 API。如何做到这一点?
Single.zip(API1.subscribeOn(Schedulers.io()),
API2.subscribeOn(Schedulers.io()), Bifunction())).subscribe();
【问题讨论】:
我正在通过以下方式进行两次 API 调用。如果两个 API 调用中的任何一个失败,我想通过更改某些参数来重试该 API。如何做到这一点?
Single.zip(API1.subscribeOn(Schedulers.io()),
API2.subscribeOn(Schedulers.io()), Bifunction())).subscribe();
【问题讨论】:
你可以在这里使用 onErrorResumeNext 来处理你的场景。为这两个 API 调用添加一个 onErrorResumeBlock ,它可以使用 diff 参数重试相同的 api。 喜欢:
Single.zip(API1.subscribeOn(Schedulers.io())
.onErrorResumeNext { throwable:Throwable ->
return@onErrorResumeNext API1DIFF_PARAMS },
API2.subscribeOn(Schedulers.io())
.onErrorResumeNext { throwable:Throwable ->
return@onErrorResumeNext API2DIFF_PARAMS }, Bifunction())).subscribe();
缺点是这只会工作一次。如果您的第二个 API 也失败了,那么它将落在您的订阅方法的错误块中
【讨论】: