RxJava请求列表

时间:2018-07-18 09:37:51

标签: android request rx-java

对不起,我的英语。我有ID类别列表,并且确实提出了这样的要求:

for(Product cat:all_cats) {
            new DefaultMediator()
                    .getProductsInCatalog(cat.getID())
                    .timeout(15, TimeUnit.SECONDS)
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(list_products -> {
                                //do something
                            },
                            throwable -> {
                                Log.e("asd", "asd");
                            });
        }

我认为这不好。我如何使用rxJava发送请求列表?

1 个答案:

答案 0 :(得分:3)

您可以通过组合两个运算符来实现:

fromIterable or fromArray:从all_cats中创建观察对象

concatMap:用于网络通话并保留订单

代码如下:

Observable.fromIterable(all_cats)
            .subscribeOn(Schedulers.io())
            .concatMap(cat ->
                    new DefaultMediator()
                            .getProductsInCatalog(cat.getID())
                            .timeout(15, TimeUnit.SECONDS);

            )
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(list_products -> {
                        //do something
                    },
                    throwable -> {
                        Log.e("asd", "asd");
                    });