1
嗨我试图让两个可观察对象按顺序依次调用。我尝试使用合并,但它不尊重秩序,所以我去了,而不是使用concat,主要问题是这两个Observable放出不同的类型。从我所看到的zip
可能是一个选项合并两个不同的observable,但没有包裹我的头。通过可观察API调用的顺序
那么具体的问题就是,一个接一个的API如何能够被调用。目前,这是我的执行
Observable<SectionEntity> sectionEntitySync = DbProvider.contentResolver(this)
.createQuery(KitchContract.Category.CONTENT_URI, null, KitchContract.DELETED + "=?",
new String[] { KitchContract.NO }, KitchContract.Category.Columns.POSITION + " ASC", true)
.mapToList(SectionEntity::new)
.flatMap(Observable::from)
.flatMap(sectionEntity -> getApi().create(sectionEntity)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread()));
Observable<ItemEntity> itemEntitySync = DbProvider.contentResolver(this)
.createQuery(KitchContract.Item.CONTENT_URI, null, null, null,null, false)
.mapToList(ItemEntity::new)
.flatMap(Observable::from)
.flatMap(itemEntity ->
getApi().create(itemEntity)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
);
你需要两者的结果吗?如果是的话,将两者合并为一个流并不是一个好主意。流只能用于一种类型或一种超类型:SectionEntity,ItemEntity从“实体”继承。 observable将是'Entity'类型,你可以检查它是什么类型的实例,并依赖于你可以调用不同动作的类型。 –