RxJavaを完全に新しくしているわけではありませんが、単純なタスクのように思えます。RxJava - 完了する前に他のObservable/Completableをトリガーした後に完了
反応性のあるAPIを公開するデータソースがあります。データを取得して返すだけで、何も送信しない場合は自動的に接続を閉じます。非同期的に異なるスケジューラで実行されている
public Observable<Object> execute(String query) {
Single<RxConnection> rxConnection = getRxDB().getConnection();
return rxConnection.flatMapObservable(conn -> {
Observable<Object> rxResult = conn.query(query);
return rxResult.doOnCompleted(() -> {
conn.close(); // THIS DOES NOT WORK. I would like to close the connection and to wait without blocking.
});
});
}
conn.query()とはconn.close():
は、ここに私のコードです。 conn.close()がサブスクライバを持たないCompletableを返すため、このコードは機能しません。さらに、doOnCompletedメソッド自体を手動で購読すると、rxResult Observableは接続が閉じられるのを待たずに完了します。
私は「を実行(文字列クエリ)」メソッドは、その観測を返すことたい: - )(conn.queryによってフェッチすべての項目を放ち を呼び出す - 放出する項目がない場合は、それがトリガーconn.close() - conn.close()Completableの後でのみ完了します。
ありがとうございました。
これはかなり簡単な方法で私の問題を解決するようです。さらに、エラーの可能性も扱います。 しかし、rxがすべてを無意味なオブジェクトをたくさん作成して観測可能にするように強制するのは恐ろしいことです。 –