Angular 2 - RxJS切换图问题

Dan*_*ima 5 rxjs typescript rxjs5 angular

我正在尝试在我的应用程序中有一个无限滚动部分.为实现这一点,我正在使用此组件来处理滚动事件等.当滚动到达div的底部时,我正在调用一个函数来获取更多数据.到现在为止还挺好.

为了使这个功能更有效,我试图在调用之前等待几秒钟,并确保正确处理数据.为此,我一直在查看Angular网站上显示的示例,该示例展示了一个维基百科搜索.

我有一个类似于文章中显示的设置,我的问题是,当我打电话时,我收到以下错误switchMap():

Type 'void' is not assignable to type 'ObservableInput<{}>'

这是我的代码示例:

private scrollEndActive: Subject<boolean> = new Subject<boolean>();

ngOnInit() {
    ...
    this.scrollEndActive
        .debounceTime(1000)
        .distinctUntilChanged()
        .switchMap(data => {
            // ... get data from server
        })
}

...

// event to trigger call to server
scrollEnd() {
    this.scrollEndActive.next(true);
}
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,这就是我得到的:在此输入图像描述

从研究中我发现它似乎是一个与应该返回Observable相关的问题(Type'void'不能分配给'ObservableInput <{}>'类型).但就我而言,我不确定是什么问题.

我正在与:

  • Angular 4.0.1
  • TypeScript 2.2.2
  • RxJS 5.2.0

Sup*_*miu 10

默认情况下,箭头函数() => {...}具有返回类型,void除非您返回某些内容.

如果你想用switchMap什么来回报,你可以像yurzui在评论中所说的那样做return Observable.empty().

话虽这么说,如果你在你的内容中返回一个null的observable switchMap,这意味着你不需要switchMap你可以直接使用dooperator,它不会修改返回的数据.或者mergeMap,它允许您从原始数据中返回一个新的Observable.