我正在使用flatMap作为指标,然后我应该触发另一个网络请求。
Observable<ResponseBody> secoondRequest = firstRequest.flatMap(responseBody -> {
return RetrofitFactory.create().setIssuingCountry(countrySetRequest1);
});
问题是我有多个secondRequest Observable,所以我的firstRequest执行了多次。我只需要对其他所有Observables 触发一次。
//This should not call firstRequest again, if it was already triggered once
Observable<ResponseBody> secoondRequest2 = firstRequest.flatMap(responseBody -> {
return RetrofitFactory.create().setIssuingCountry(countrySetRequest1);
});
答案 0 :(得分:0)
尚不清楚您的用例是什么。因此,我假设您有多个请求,具体取决于第一个请求的响应。那是
request1 <-request2,request3,request4 .... 解决问题的一种可能方法如下
Observable<ResponseBody> firstRequest = firstRequest();
Observable<ResponseBody> finalRequest = firstRequest.flatMap(responseBody -> {
return RetrofitFactory.create().setIssuingCountry(countrySetRequest1)
.merge(RetrofitFactory.create().setIssuingCountry(countrySetRequest1))
.merge(RetrofitFactory.create().setIssuingCountry(countrySetRequest1))
.merge(RetrofitFactory.create().setIssuingCountry(countrySetRequest1))
...
}
答案 1 :(得分:0)
您需要将firstObservable
保存在变量中,并使用share()
和replay()
使其从多个源执行一次(第一个可观察的对象将被订阅一次),但其值是发射到多个第二可观察物。
Observable<Something> firstObservable = firstRequest().share().replay()
Observable<ResponseBody> secoondRequest2 = firstObservable.flatMap(responseBody -> {
return RetrofitFactory.create().setIssuingCountry(countrySetRequest1);
});