使用RxJava链接单个独立请求

时间:2018-07-11 11:09:59

标签: android retrofit2 rx-java2

我有一种方法可以将商品添加到我的帐户中:

 fun addItem(@Body addExperience: AddItem): Single<Item>

有时用户可以选择多个项目,然后将它们全部批量添加到他的帐户中。我想将这些独立的调用与RxJava2(可能是并行的)链接在一起,然后使用每个调用的结果来增加进度条。

问题是---我不知道该怎么做!这可能是Flowable吗?如何从多个单打中生成此可流动对象?

1 个答案:

答案 0 :(得分:0)

我建议每个请求都使用Flowable.fromIterable()flatMapSingle()。您可以通知用户进度,因为在每个请求之后,都会调用subscribe的onNext。

List<Single<Integer>> list = new ArrayList<>();
list.add(Single.just(1));
list.add(Single.just(2));
list.add(Single.just(3));
list.add(Single.just(4));

Flowable.fromIterable(list)
        .flatMapSingle(singleRetrofitRequest -> singleRetrofitRequest, false, 2)
        .subscribe(item -> System.out.println(item));

如您所见,我在flatMapSingle()中添加了附加参数,以表示可以并行执行多少个请求。