angular - RxJS take 运算符不与 Angular 应用程序一起使用

标签 angular rxjs

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

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

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

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

但是,据我所知,解析器应该从可观察对象“获取”的 5 件事不是控制台记录,而是数组返回 20 个对象。我在 take rxjs 运算符中做错了什么?我不想要所有 20 个回复,可能只需要 5 个。

enter image description here

最佳答案

take(5) 表示它将从流中获取 5 个项目。该数组是流中的单个项目,因为可观察对象的类型为 NewsAPIArticle[]。如果可观察对象是 NewsAPIArticle 类型,并且流发出多篇文章,take(5) 将按您预期的方式运行,但事实上,您调用的服务会发出所有一次发表文章。

关于angular - RxJS take 运算符不与 Angular 应用程序一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54371574/

相关文章:

css - 我可以隔离放大验证器样式吗?

javascript - 我该如何重构这个 RXJS/Angular 代码?

angular - 如何将可观察值传递给@Input() Angular 4

angular - 两个组件如何订阅同一个事件?

Angular - 组件之间的共享服务不起作用

Angular:升级到版本 5 错误:@angular/compiler-cli 的版本需要为 2.3.1 或更高版本。当前版本是 "5.0.0"

c# - 在.net webApi中删除没有id参数的请求

javascript - 如何拆分和合并 RxJS 发出的数组值?

rxjs - 去抖动和缓冲 rxjs 订阅

Angular 2 Http 获取响应示例