0
私はネットワークリクエストを必要とするクリックイベントがあります。observableからcompletableにマッピングするときにRxJava2 subscribeが呼び出されない
RxView.clicks(button)
.flatMapCompletable({ x -> networkCall() })
.subscribe(...)
クリックは観測可能です。
networkCall
はCompletableを返します。
ボタンをタップするとsubscribe
のブロックが呼び出されることはありません。
私は、ボタンをタップするたびに、ネットワーク要求が行われた後、subscribe
で扱われているように、私は仕事にこれを取得するにはどうすればよい
RxView.clicks(button)
.flatMap({ x -> networkCall().toObservable<Void>() })
.subscribe(...)
をも試みました。
EDIT:
私はまだネットワークのものを行っていないので、現在、それはとても完了することを保証ちょうど
public Completable networkCall() {
Completable.complete();
}
です。
サブスクライブをどのように無効にしますか?私は確信していませんが、 'onNext'をオーバーライドするだけではうまくいきません。また、 'onComplete'関数をあなたのサブスクライバでオーバーライドしましたか? – Christopher
ドキュメントについては、flatmapCompletableがあなたにとって適切なオプションではないとも言います。上流のObservableの各要素をCompletableSourcesにマップし、それを購読し、上流とすべてのCompletableSourcesが完了するまで待ちます。 - > 'RxView.clicks'はまったく完了しません! http://reactivex.io/RxJava/javadoc/io/reactivex/Observable.html#flatMapCompletable-io.reactivex.functions.Function- – Christopher
@Christopher私は 'flatmapCompletable'が適切ではないという気持ちがありました。それが私です2番目のコードブロックも試しました。私は 'onNext'と' onComplete'をオーバーライドし、それらのメソッドにログとブレークポイントを追加しただけで、どちらもヒットしません。しかし、2番目のコードブロックであっても、ネットワークコールから 'onComplete'が呼び出されるときにストリームを終了させる可能性があるので、私はまだ心配しています。 – SunnySydeUp