我有一个服务,调用API获取一堆电影描述并返回 Observable:
在使用上述函数的组件中,我会在每次页面值改变时调用它,以便在组件视图中为用户提供分页功能。
这是调用服务的组件:
我已经阅读过,在Angular中,你应该总是尝试使用Observable而不是Promises编写代码,但在像这样的场景中,我看不到订阅api调用响应的任何优势。
将服务中的Observable转换为Promise是否正确呢?
getNowPlayingMovies$(page: number, country?: string): Observable<NowPlaying> {
console.log(`${this.baseUrl}${this.now_playing}?${this.key}®ion=${country || 'US'}&page=${page}`);
return this.http.get<NowPlaying>(
`${this.baseUrl}${this.now_playing}?${this.key}®ion=${country || 'US'}&page=${page}`
);
}
在使用上述函数的组件中,我会在每次页面值改变时调用它,以便在组件视图中为用户提供分页功能。
这是调用服务的组件:
getNowPlayingMovies(): void {
this.nowPlayingService.getNowPlayingMovies$(this.page).subscribe((data) => {
this.nowPlaying.push(
...data.results.filter((result) => result.backdrop_path)
);
if(!this.last_page){
this.last_page = data.total_pages
this.page++;
} else if(this.page <= data.total_pages) {
this.page++;
}
console.log(data);
console.log(this.nowPlaying);
});
}
我已经阅读过,在Angular中,你应该总是尝试使用Observable而不是Promises编写代码,但在像这样的场景中,我看不到订阅api调用响应的任何优势。
将服务中的Observable转换为Promise是否正确呢?
getNowPlayingMovies$(page: number, country?: string): Promise<NowPlaying> {
console.log(`${this.baseUrl}${this.now_playing}?${this.key}®ion=${country || 'US'}&page=${page}`);
return this.http.get<NowPlaying>(
`${this.baseUrl}${this.now_playing}?${this.key}®ion=${country || 'US'}&page=${page}`
).toPromise();
}
我正在学习Angular,并将其添加到我的作品集中,因此我想学习以正确和最佳的方式实现它。