我有一个需要发出网络请求的单击事件。
RxView.clicks(button)
.flatMapCompletable({ x -> networkCall() })
.subscribe(...)
点击是可观察到的。
networkCall
返回可完成的。但是,当我点击按钮时,
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() })