将 observable 映射到 completable 时不调用 RxJava2 subscribe
RxJava2 subscribe is not called when mapping observable to completable
我有一个点击事件需要发起网络请求。
RxView.clicks(button)
.flatMapCompletable({ x -> networkCall() })
.subscribe(...)
点击是一个 Observable。
networkCall
returns 一个可完成的。
然而,当我点击按钮时,subscribe
中的块永远不会被调用。
我也试过了
RxView.clicks(button)
.flatMap({ x -> networkCall().toObservable<Void>() })
.subscribe(...)
我怎样才能让它工作,以便每次点击按钮时,都会发出网络请求,然后在 subscribe
中处理。
编辑:
我还没有完成网络方面的工作,所以目前只是
public Completable networkCall() {
Completable.complete();
}
所以保证完成。
flatMap
案例需要项目,否则它的 onComplete
将永远不会触发,因为已经提到了永不完成的点击来源。例如:
RxView.clicks(button)
.flatMap({ x -> networkCall().andThen(Observable.just("irrelevant")) })
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ v -> System.out.println(v)}, { e -> e.printStackTrace() })
我有一个点击事件需要发起网络请求。
RxView.clicks(button)
.flatMapCompletable({ x -> networkCall() })
.subscribe(...)
点击是一个 Observable。
networkCall
returns 一个可完成的。
然而,当我点击按钮时,subscribe
中的块永远不会被调用。
我也试过了
RxView.clicks(button)
.flatMap({ x -> networkCall().toObservable<Void>() })
.subscribe(...)
我怎样才能让它工作,以便每次点击按钮时,都会发出网络请求,然后在 subscribe
中处理。
编辑:
我还没有完成网络方面的工作,所以目前只是
public Completable networkCall() {
Completable.complete();
}
所以保证完成。
flatMap
案例需要项目,否则它的 onComplete
将永远不会触发,因为已经提到了永不完成的点击来源。例如:
RxView.clicks(button)
.flatMap({ x -> networkCall().andThen(Observable.just("irrelevant")) })
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ v -> System.out.println(v)}, { e -> e.printStackTrace() })