Rx java2 RxJava Single.concat

Rx java2 RxJava Single.concat,rx-java2,Rx Java2,我有以下代码: model.getCategories() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1<List<Category>>() { @Overri

我有以下代码:

 model.getCategories()
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Action1<List<Category>>()
                {
                    @Override
                    public void call(final List<Category> categories)
                    {
                        model.getUnits()
                                .subscribeOn(Schedulers.io())
                                .observeOn(AndroidSchedulers.mainThread())
                                .subscribe(new Action1<List<Unit>>()
                                {
                                    @Override
                                    public void call(List<Unit> units)
                                    {
                                        view.showAddProductDialog(units, categories);
                                    }
                                });
                    }
                });
model.getCategories()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.订阅(新操作1()
{
@凌驾
公共作废调用(最终列表类别)
{
model.getUnits()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.订阅(新操作1()
{
@凌驾
公共作废通知(列出单位)
{
view.showAddProductDialog(单位、类别);
}
});
}
});
我有一个丑陋的巢穴。我怎样才能修好它。 我试过这样的方法:

Single.concat(model.getCategories(), model.getUnits())
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Action1<List<? extends Object>>()
                {
                    @Override
                    public void call(List<? extends Object> objects)
                    {
                        // do something
                    }
                });
Single.concat(model.getCategories(),model.getUnits())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(新操作1使用
Single.zip()

其中,
Pair
可以是任何元组实现,即。

使用
Single.zip()


其中,
Pair
可以是任何元组实现,也就是说,

我明白了,它应该适用于这个示例,但是如果它有更多的嵌套操作,而不仅仅是2.Protip:当键入
Single时,看看IDE的内容辅助中弹出的和/或什么方法重载。
。我明白了,它应该适用于这个示例,但是如果它会保存更多嵌套操作,而不仅仅是2.Protip:当键入
Single.
时,查看IDE内容助手中弹出的和/或什么方法重载。
Single.zip(
    getCategories().subscribeOn(Schedulers.io()),
    getUnits().subscribeOn(Schedulers.io()),
    (a, b) -> Pair.of(a, b)
)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
    pair -> view.showAddProductDialog(pair.first, pair.second),
    error -> showError(error.toString())
)