RxJS接受运算符不与Angular应用一起使用

J.G*_*ble 1 rxjs angular

我有一个解析器,该解析器从服务中获取数据,并将该Observable对象传递给订阅并实现解析器的组件。

resolve (route: ActivatedRouteSnapshot): Observable<NewsAPIArticle[]> {
    return this.newsAPIService.getNewsAPIArticles()
        .pipe(
            catchError(error => {
                this.alertify.error('Problem retrieving news');
                return of(null);
            }),
            take(5)
        );
}
Run Code Online (Sandbox Code Playgroud)

在组件的ngOnInit中,我获取数据,将其保存到本地数组,然后控制台记录该数组。

ngOnInit() {
    this.router.data.subscribe(data => {
      this.articles = data['news']['articles'];
      console.log(this.articles);
      this.language = 'en';
    });
  }
Run Code Online (Sandbox Code Playgroud)

但是,按照我的理解,解析器不应该从控制台记录5件事,而是应从可观察对象中“取走”,而是返回20个对象。我在take rxjs运算符中做错了什么?我不希望所有20个回复,可能只有5个。

在此处输入图片说明

And*_*amb 5

take(5)表示将从流中取出5个项目。数组是流中的单个项目,因为可观察的类型是NewsAPIArticle[]。如果observable的类型为NewsAPIArticle,并且该流发出了多篇文章,则其take(5)行为将与您期望的一样,但实际上,您调用的服务会一次发出所有文章。