RxJava迭代对象中的列表并返回该对象

要求执行api请求并下载作为响应返回的所有资产。我有以下逻辑,但不确定执行此操作的正确方法是什么。


 public Observable<Response> prepareSomething() {

    return api.requestSomthing()

            .observeOn(Schedulers.io())

            .flatMap(response -> Observable.fromIterable(response.getAssetsList()))

            .map(asset -> downloadAsset(asset, response.getSomeValue/*how?*/))

            .someRxOperatorToRetrunResponseObject(/*how?*/);

}

我实际上找到了一种通过以下方式实现它的方法:


public Observable<Response> prepareSomething() {

    return api.requestSomthing()

            .observeOn(Schedulers.io())

            .flatMap(response -> {

                ArrayList<Observable<Asset>> observables = new ArrayList<>();

                for(Asset asset : response.getAssetsList()){

                    Observable downloadOb = Observable.just(asset)

                            .map(assetToDownload-> downloadAsset(assetToDownload, response.getSomeValue()));

                    observables.add(downloadOb);

                }


                return Observable.zip(observables, objects -> response);

            });

}

但这看起来不太好。赞赏是否有人可以帮助证明这一点。


ABOUTYOU
浏览 155回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java