2017-09-07 12 views
1

rxjavaで初心者の私の種類と私は問題に直面している。RxJava2のマルチスレッドや何かが間違っている

2つのネットワークコールがあります。

Observable<ClassA> getClassA(){ 
    return networkExecutor.getClassAFromApi(); 
} 
Observable<ClassB> getClassB(){ 
    return networkExecutor.getClassBFromApi(); 
} 

コードを処理するためには、これらの両方が必要です。そのため、私はそれらの上でジップを行います。また私はこれらの値をプライベートで一時的に保存したいClassスコープ変数はcAとcBと言うことができます。

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

問題は、後で同じ手順を繰り返すと、cAとcBが新しい値ではなく古い値になります。

iが同じ前記第2の時間を呼び出したときに、例えばIは、CaとCbのジップ方法ハッシュ呼び出し初めてXXX1、XXX2

、新しいオブジェクトはハッシュのxxx3とxxx4でネットワークから生成されます。

私がこのクラスゲッターと呼んだとき、私はcA xxx1を取得しました。代わりに、すでにxxx3を取得しています。

答えて

0

問題ではなく、グローバルにコンポーネントを設定するので、あなたが値を保持するためにカスタムクラスを作成するストリームに保管してください、そして、それらを取る必要があり、建築中だった。 onNext(CustomClassObject object){ // object.getClassA; }

0

イベントの後にdo演算子の一部を使用して、ハッシュフィールドをクリアするか、新しいリクエストを続行する前にクリアすることができます。 ルックアップDo operators。私はおそらくdoAfterNext()演算子を使用し、必要に応じてフィールドをリセットします。

関連する問題