java 合并2个有序列_RxJava合并请求序列

问题

我有两个Apis。Api 1为我提供了一个项目列表,Api 2为我提供了我从Api 1获得的每个项目的更详细信息。到目前为止,我解决它的方式导致性能下降。

问题

借助Retrofit和RxJava,可以快速有效地解决此问题。

我的方法

当下,我的解决方案如下所示:

步骤1:Single>从Api 1 执行改造。

第2步:我遍历此项目,并向Api 2请求每个项目。

步骤3:Single对每个项目依次执行改造退货

步骤4:在完全执行Api 2的所有调用之后,我为所有包含信息和扩展信息的项创建一个新对象。

我的密码

public void addExtendedInformations(final Information[] informations) {

final ArrayList informationDetailArrayList = new ArrayList<>();

final JSONRequestRatingHelper.RatingRequestListener ratingRequestListener = new JSONRequestRatingHelper.RatingRequestListener() {

@Override

public void onDownloadFinished(Information baseInformation, ExtendedInformation extendedInformation) {

informationDetailArrayList.add(new InformationDetail(baseInformation, extendedInformation));

if (informationDetailArrayList.size() >= informations.length){

listener.onAllExtendedInformationLoadedAndCombined(informationDetailArrayList);

}

}

};

for (Information information : informations) {

getExtendedInformation(ratingRequestListener, information);

}

}

public void getRatingsByTitle(final JSONRequestRatingHelper.RatingRequestListener ratingRequestListener, final Information information) {

Single repos = service.findForTitle(information.title);

disposable.add(repos.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribeWith(new DisposableSingleObserver() {

@Override

public void onSuccess(ExtendedInformation extendedInformation) {

ratingRequestListener.onDownloadFinished(information, extendedInformation);

}

@Override

public void onError(Throwable e) {

ExtendedInformation extendedInformation = new ExtendedInformation();

ratingRequestListener.onDownloadFinished(extendedInformation, information);

}

}));

}

public interface RatingRequestListener {

void onDownloadFinished(Information information, ExtendedInformation extendedInformation);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值