RxSwift Observable.empty()正在调用Next

时间:2019-04-04 02:03:37

标签: ios swift rx-swift

检测何时到达tableview底部 如果不是底部return Observable.empty() 如果tableview位于底部return Observable.just(())

我所知道的

Observable.empty()没有呼叫onNext

但是empty()just()呼叫onNext

tableView.rx.contentOffset
            .map {
                self.isNearTheBottomEdge(contentOffset: $0, self.tableView) && self.postModel.isLoadingComplete.value
                    ? Observable.just(())
                    : Observable.empty()
            }
            .throttle(3, scheduler: MainScheduler.instance)

            .subscribe(onNext: {
                print("reached bottom")
                self.postModel.nextPage.onNext(())
            },onCompleted: {
                print("complete")
            }
            )
            .disposed(by: disposeBag)

return Observable.empty()处于调试状态,但始终为print("reached bottom")

1 个答案:

答案 0 :(得分:1)

如果您不想让subscribe(onNext)在Observable.empty()上被调用,只需将.map{}更改为.flatMap{}

tableView.rx.contentOffset
            .flatMap {
                self.isNearTheBottomEdge(contentOffset: $0, self.tableView) && self.postModel.isLoadingComplete.value
                    ? Observable.just(())
                    : Observable.empty()
            }

Here,您可以了解mapflatMap之间的区别