RxJava 请求列表

r12*_*597 2 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");
                            });
        }
Run Code Online (Sandbox Code Playgroud)

我觉得不好。我如何使用 rxJava 发送请求列表?

mah*_*aja 5

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

fromIterable 或 fromArray : 从 all_cats 创建 observable

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");
                    });
Run Code Online (Sandbox Code Playgroud)