RXJava2: richtige pattern-chain-retrofit-Anforderungen

Ich bin relativ neu in RXJava im Allgemeinen (eigentlich nur begann, es zu benutzen mit RXJava2), und die meisten Unterlagen, die ich finden kann, neigt dazu, RXJava1; ich kann in der Regel übersetzen zwischen den beiden jetzt, aber der gesamte Reaktive Zeug ist so groß, dass es eine überwältigende API mit guter Dokumentation (wenn Sie es finden können). Ich bin versucht zu rationalisieren mein code, ich möchte es mit kleinen Schritten. Das erste problem, das ich lösen will, ist dieses gemeinsame Muster, das ich eine Menge in meinem aktuellen Projekt:

Haben Sie eine Anforderung, die, wenn Sie erfolgreich ist, verwenden Sie eine zweite Anfrage.

Entweder, wenn Sie fehlschlägt, müssen Sie in der Lage sein zu erkennen das man versagt. (meist für die Anzeige von benutzerdefinierten UI-Warnungen).

Dies ist, wie ich in der Regel tun Sie es jetzt:

(weggelassen .subscribeOn/observeOn für Einfachheit)

Single<FirstResponse> first = retrofitService.getSomething();

first
   .subscribeWith(
     new DisposableSingleObserver<FirstResponse>() {
         @Override
         public void onSuccess(final FirstResponse firstResponse) {

               //If FirstResponse is OK…
                Single<SecondResponse> second = 
                 retrofitService
                    .getSecondResponse(firstResponse.id) //value from 1st
                    .subscribeWith(
                      new DisposableSingleObserver<SecondResponse>() {

                           @Override
                           public void onSuccess(final SecondResponse secondResponse) {
                              //we're done with both!
                           }

                           @Override
                            public void onError(final Throwable error) {
                            //2nd request Failed, 
                            }                        
                     });

         }

         @Override
         public void onError(final Throwable error) {
              //firstRequest Failed, 
         }
      });

Gibt es eine bessere Möglichkeit, damit umzugehen, in RXJava2?

Ich habe versucht flatMap - und Varianten-und sogar ein Single.zip oder ähnliches, aber ich bin mir nicht sicher, was die einfachste und verbreitetste Muster ist die Auseinandersetzung mit dieser.

Falls Sie sich Fragen, FirstRequest holt eine tatsächliche Token ich brauche in der SecondRequest. Kann nicht zweite Anforderung ohne den token.

Schreibe einen Kommentar