3

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

RxView.clicks(button)
    .flatMapCompletable({ x -> networkCall() })
    .subscribe(...)

点击是一个 Observable。
networkCall返回一个可完成的。
然而,subscribe当我点击按钮时,里面的块永远不会被调用。

我也试过

RxView.clicks(button)
    .flatMap({ x -> networkCall().toObservable<Void>() })
    .subscribe(...)

我怎样才能让它工作,这样每次我点击按钮时,都会发出一个网络请求,然后在subscribe.

编辑:

我还没有做网络的东西所以目前它只是

public Completable networkCall() {
    Completable.complete();
}

所以保证完成。

4

1 回答 1

10

flatMap案例需要项目,否则onComplete由于已经提到的永不完成的点击源,它永远不会触发。例如:

RxView.clicks(button)
.flatMap({ x -> networkCall().andThen(Observable.just("irrelevant")) })
.observeOn(AndroidSchedulers.mainThread()) 
.subscribe({ v -> System.out.println(v)}, { e -> e.printStackTrace() })
于 2017-08-24T11:23:36.970 回答