我有一个解析器,它从服务中获取数据并将该 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 个。
最佳答案
take(5)
表示它将从流中获取 5 个项目。该数组是流中的单个项目,因为可观察对象的类型为 NewsAPIArticle[]
。如果可观察对象是 NewsAPIArticle
类型,并且流发出多篇文章,take(5)
将按您预期的方式运行,但事实上,您调用的服务会发出所有一次发表文章。
关于angular - RxJS take 运算符不与 Angular 应用程序一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54371574/