Hallo Ich versuche, zwei beobachtbare nacheinander in Reihenfolge aufgerufen werden. Ich habe versucht, Merge zu verwenden, aber es respektiert nicht Reihenfolge, also ging ich und verwendet concat stattdessen, das Hauptproblem ist, dass diese zwei Observable verschiedene Typen emittieren. Von dem, was ich gesehen habe zip
könnte eine Option sein, zwei verschiedene beobachtbare zusammenführen, aber habe meinen Kopf nicht um ihn herum gewickelt.Sequenz von API-Calls durch beobachtbare
Also die konkrete Frage si, wie kann man sequentielle API Anruf nach dem anderen haben. Derzeit ist dies meine Implementierung
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())
);
Sie benötigen die Ergebnisse von beiden? Wenn ja, wäre das keine gute Idee, beide zu einem Stream zu kombinieren. Ein Stream sollte nur für einen Typ oder für einen Supertyp gelten: SectionEntity, ItemEntity erben von 'Entity'. Das Observable würde vom Typ 'Entity' sein und Sie würden mit der Instanz prüfen, um welchen Typ es sich handelt und abhängig von dem Typ, auf den Sie verschiedene Aktionen aufrufen können. –