im essayant d'avoir un modèle, où mon observable qui produit un objet, se transforme en événements de domaine comme Started, Succès, erreur emited autour de la Producing observable, si cela est logiqueRxJava: Comment préfixer startWith() default emit CHAQUE HEURE parent observable émet?
public Observable<BookRenderingEvent> extractAndRenderObservable(String epubPath) {
return extractObservable(epubPath)
.flatMapObservable(extractedEpub -> renderObservable(extractedEpub)
.<BookRenderingEvent>map(renderedEpub -> new BookRenderingEvent.Success(renderedEpub))
.onErrorReturn(t -> new BookRenderingEvent.Error())
.startWith(new BookRenderingEvent.Started()));
}
private Observable<RenderedEpub> renderObservable(ExtractedEpub extractedEpub) {
return Observable.combineLatest(readerConfigObservable(), pagerDimensionsObservable(), ..)
.switchMapSingle(foo -> doRenderObservable()) <--- heavy work
.map(bar -> new RenderedEpub(bar))
}
renderObservable contient une action lourde donc je veux émettre ces événements d'état, ainsi UI peut réagir en conséquence (avec succès contenant l'objet extraitEpub comme vous pouvez le voir dans la carte)
Quel est mon problème, renderObservable contient combineLatest(), donc il "reste ouvert "et émettent plusieurs fois dans le temps, chaque fois que ses obervables émettent.
Ainsi, le flux des événements est Démarré, Succès, Succès ... Succès.
Je veux qu'il soit lancé, Succès, Mise en route, succès .. etc. i.e. précédez événement a commencé whever combineLatest émet, mais ma connaissance rx est insuffisante.
Merci
où le mettriez-vous s'il vous plaît? im hors des idées .. devinant son besoin d'aller après le combineLatest, pour déclencher sur chaque emit, mais alors comment puis-je aussi lancer le doRenderObservable? – urSus
Là où vous avez actuellement le 'startWith()' –
qui donnerait la priorité au succès – urSus