我有一个需要发出网络请求的单击事件。

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() })

10-07 17:38