我试图在调用rest服务n次后处理结果,但是一个对象列表告诉我是否调用web服务,但是当我完成n次调用时,我无法处理最终结果,似乎是由于异步,有人能告诉我我做错了什么吗?,非常感谢,并原谅我糟糕的英语。
示例代码如下:
private List<ResquestService> request;
private void process(){
Observable.fromIterable(request)
.filter(resquestService -> resquestService.getType().equals(WS_TYPE))
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.newThread())
.subscribe(
resquestService -> {consumeRestService(resquestService);},
Throwable::printStackTrace,
() -> {processFinalResults();}
);
}
private void consumeRestService(ResquestService resquestService){
getApi().processData(resquestService)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.newThread())
.subscribe(
next -> {processResultWS();},
error -> {handleErrorWS();}
);
}
public class ResquestService {
private int id;
private String name;
private String type;
}
发布于 2018-03-02 17:57:19
解决方案是放入可迭代的.subscribeOn (Schedulers.newThread ())
在对rest服务的调用中:.observeOn (AndroidSchedulers.mainThread ())
private void process(){
Observable.fromIterable(request)
.filter(resquestService -> resquestService.getType().equals(WS_TYPE))
.subscribeOn(Schedulers.newThread())
.subscribe(
resquestService -> {consumeRestService(resquestService);},
Throwable::printStackTrace,
() -> {processFinalResults();}
);
}
private void consumeRestService(ResquestService resquestService){
getApi().processData(resquestService)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
next -> {processResultWS();},
error -> {handleErrorWS();}
);
}
https://stackoverflow.com/questions/49062609
复制相似问题