2017-09-07 2 views
1

Ich bin ein bisschen Anfänger bei rxjava und ich stehe vor einem Problem.RxJava2 Multithreading oder etwas schief geht

Ich habe zwei Netzwerkanrufe.

jetzt brauche ich beide, damit Code fortfahren, also mache ich einen Reißverschluss auf ihnen Außerdem möchte ich diese Werte temporär in privaten Klassen-Scope-Variablen speichern, sagen wir cA und cB;

getClassA().zipWith(getClassB, (classA, classB) -> { 
    cA = classA; 
    cB = classB; 
    return true; 
} 

das Problem ist, wenn ich später den gleichen Schritt wiederholen, Ca und Cb ist der alte Wert anstelle des neuen.

beispielsweise erstmals I zip Verfahren Hashes von Ca und Cb nennen sind xxx1, xxx2

wenn i die gleiche Methode zweites Mal aufrufen, werden neue Objekte vom Netzwerk generiert mit Hashes xxx3 und xxx4.

Wenn ich diese Klasse Getter aufrufen, bekomme ich cA xxx1 stattdessen sollte ich schon die xxx3 bekommen.

Antwort

0

Das Problem war in der Architektur, sondern Komponenten globaly die Einstellung, können Sie sie in dem Strom Erstellen von benutzerdefinierter Klasse, um die Werte zu halten, halten sollen, und nehmen sie in. onNext(CustomClassObject object){ // object.getClassA; }

0

Sie können einige der do-Operatoren nach dem Ereignis verwenden, um Hashfelder zu bereinigen oder sie zu löschen, bevor Sie mit einer neuen Anforderung fortfahren. Nachschlagen Do operators. Ich würde wahrscheinlich den Operator doAfterNext() verwenden und die Felder nach Bedarf zurücksetzen.