【发布时间】:2023-04-02 10:55:01
【问题描述】:
我正在使用值列表创建Observable 列表,foreach 值自定义Observable。我使用合并运行它们,但我无法检测到哪个触发了onNext() 或onError()
就像下面的代码:
List<Observable<MyHttpRsObj>> observables = new ArrayList<>();
for (String param : paramsList) {
Observable<MyHttpRsObj> objObservable = MyRestClient.get().doHttpRequest(param);
observables.add(fileUploadObservable);
}
Observable<BaseRs> combinedObservables = Observable.merge(observables);
combinedObservables.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(new Subscriber<MyHttpRsObj>() {
@Override
public void onCompleted() {
//called only once when all Observables finished
}
@Override
public void onError(Throwable throwable) {
//how to know which Observable has error (which param)
}
@Override
public void onNext(MyHttpRsObj myHttpRsObj) {
//how to know which Observable has sccess (which param)
}
});
【问题讨论】:
-
在每个可观察到的形式
doHttpRequest中,doOnError 获取异常并用您的自定义异常包装它,该异常内部也有一个param。至于成功,你可以做同样的伎俩,但使用 map 代替并返回MyHttpRsObj和param在里面。
标签: java android rx-java observable