首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用retrofit和rxjava调用n次rest服务并在最后解释结果?

如何使用retrofit和rxjava调用n次rest服务并在最后解释结果?
EN

Stack Overflow用户
提问于 2018-03-02 12:00:05
回答 1查看 26关注 0票数 1

我试图在调用rest服务n次后处理结果,但是一个对象列表告诉我是否调用web服务,但是当我完成n次调用时,我无法处理最终结果,似乎是由于异步,有人能告诉我我做错了什么吗?,非常感谢,并原谅我糟糕的英语。

示例代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
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;
}
EN

回答 1

Stack Overflow用户

发布于 2018-03-03 01:57:19

解决方案是放入可迭代的.subscribeOn (Schedulers.newThread ())

在对rest服务的调用中:.observeOn (AndroidSchedulers.mainThread ())

代码语言:javascript
代码运行次数:0
运行
复制
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();}
            );
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49062609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档