我有一个解析器,该解析器从服务中获取数据,并将该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个。
take(5)表示将从流中取出5个项目。数组是流中的单个项目,因为可观察的类型是NewsAPIArticle[]。如果observable的类型为NewsAPIArticle,并且该流发出了多篇文章,则其take(5)行为将与您期望的一样,但实际上,您调用的服务会一次发出所有文章。
| 归档时间: |
|
| 查看次数: |
453 次 |
| 最近记录: |