我必须进行两次API调用。
我想在响应呼叫2之后再呼叫1
如果2 result
是notValid
,则重试整个序列,最多3次。
任何建议如何做到这一点?
我正在使用retrofit
,两个请求都是Observable's
答案 0 :(得分:1)
假设您的virtual
返回一个对象(在这种情况下,Observable
会更可取),则将第一个对象的结果映射到第二个对象上,然后有条件地使第二个对象失败并出现错误retry检测到它并完成其工作:
Single
答案 1 :(得分:0)
您需要为此使用switchMap
,所以它将类似于:
final PublishSubject<Object> retry = PublishSubject.create()
final Observable<YourObject> twoResponses = retry
.startWith(new Object())
.switchMap {
service.call1()
.switchMap { response1 ->
service.call2()
.map { response2 -> /* combine response1 and response2 to YourObject*/}
}
}
.subscribeOn(networkScheduler)
.observeOn(uiScheduler)
.replay(1).refCount()
twoResponses.filter { /* need to retry */ }
.map { new Object() }
.subscribe(retry) //don't forget to unsubscribe when activity close