我有一个需要发出网络请求的点击事件。
RxView.clicks(button)
.flatMapCompletable({ x -> networkCall() })
.subscribe(...)
点击是一个Observable
networkCall
返回Completable
但是,当我点击按钮时,subscribe
内的块永远不会被调用。
我也试过
RxView.clicks(button)
.flatMap({ x -> networkCall().toObservable<Void>() })
.subscribe(...)
我怎样才能使其工作,以便每次点击按钮时,都会发出网络请求,然后在subscribe
处理。
编辑:
我还没有完成网络工作,所以目前只是
public Completable networkCall() {
Completable.complete();
}
所以它保证完成。
答案 0 :(得分:6)
flatMap
案例需要商品,否则其onComplete
将永远不会因为已经提到的永不完成的点击来源而触发。例如:
RxView.clicks(button)
.flatMap({ x -> networkCall().andThen(Observable.just("irrelevant")) })
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ v -> System.out.println(v)}, { e -> e.printStackTrace() })