1. ホーム
  2. java

[解決済み] RxJavaで、observableをチェーンするときに変数を渡すにはどうしたらいいですか?

2023-05-01 21:49:03

質問

RxJavaを使って非同期処理をチェーンしているのですが、下流に変数を渡したいのですが、どうすればいいですか?

Observable
   .from(modifications)
   .flatmap( (data1) -> { return op1(data1); })
   ...
   .flatmap( (data2) -> { 
       // How to access data1 here ?
       return op2(data2);
   })

よくあるパターンのような気がしますが、情報が見つかりませんでした。

どのように解決するのですか?

私はCouchbaseのフォーラムから得たアドバイスは、ネストされたobservablesを使用することです。

Observable
    .from(modifications)
    .flatmap( (data1) -> { 
        return op1(data1)
            ...
            .flatmap( (data2) -> { 
                // I can access data1 here
                return op2(data2);
            })
        });

EDIT: 最も推奨されているようなので、これを受け入れられた回答としてマークしておきます。処理が複雑ですべてをネストできない場合は、関数呼び出しで解決策を確認することもできます。