我对Angular很陌生,正试图搞清楚这么多概念。 我有一个observable,可以正确地从一个api中获取一个json对象的数组,问题是对于数组中的每一个成员,我都需要调用第二个api来获取一个单一的值。 问题是,对于数组中的每个成员,我需要调用第二个api来获取一个单一的值(附带说明--我将限制第一个api调用的返回值为6个成员)。 然后我想把这个值作为一个新的属性存储到数组的每个成员中。对第一个api的调用返回一个值,我需要查询第二个api来获得我想要存储的值。
我找到了几个如何做到这一点的例子,但我还是有点困难。 部分问题是我使用了一个接口 "Movies",这让我很困扰(我想)。 这个 是相当接近我想做的事情。 任何帮助都将是非常感激的。
public getMovies(): Observable<Movie[]>
{
return this.http.get<Movie[]>(this.apiUrl, this.httpOptions).pipe(
tap(data => console.log( data[0].movie.ids['imdb'])), // this works. I need to pass this into a second service
catchError (this.handleError)
);
// mergeMap ( data => this.http.get (someAPI ?id= {data[0].movie.ids['imdb']} )) //make call here?
.subscribe ( data => {
// not sure about this. I need to store the return of the second call into Movie property.
}
我认为应该分开来做,因为想象一下你有一个1000部电影的数组,你会做1k的http请求。
那么我建议你需要获取所有的电影,并显示它们,当用户点击每部电影时,获取新的api,我相信它的电影描述(演员,sipnosis等)。
public getMovies(): Observable<Movie[]>
{
return this.http.get<Movie[]>(this.apiUrl, this.httpOptions);
}
public getMovieDescription(movieId): Observable<MovieDescription>
{
//Use the Movie Id to fecth the movie description
return this.http.get<MovieDescription>(this.apiUrl, this.httpOptions);
}
看看这个例子 根据特定的条件将RxJs中的两个观测数据流连接起来。