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())
)