У меня есть эта служба, которая обращается к API, чтобы получить кучу описаний фильмов, и возвращает Observable:
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 и работаю над этим, чтобы добавить его в свое портфолио, поэтому я хочу научиться делать это правильно и наилучшим образом.