寻求有关可观察 http 序列的帮助,我想对一个 api 进行两次 http 调用,第二个依赖于第一个。第一个返回一个 URL 数组,第二个对该数组中的每个 url 发出 get 请求,然后在流上返回响应。如果我在其中一个依赖请求中硬编码,那么我会取回我正在寻找的标题之一:
search(character): Observable<any> {
let that = this
let queryUrl: string = character.url;
return this.http.get(queryUrl)
.map((response: Response) => {
this.characterResults = response.json().films
return this.characterResults
//Example response:
// ["https://api.com/films/1", "https://api.com/films/2", "https://api.com/films/3", "https://api.com/films/4"]
})
.flatMap((film) => {
return that.http.get(film[0])
.map((response: Response) => {
return response.json().title
})
})
}
getApiData(character) {
this.apiService.search(character)
.subscribe((results) => { // on sucesss
console.log(results)
},
(err: any) => { // on error
console.log(err);
},
() => { // on completion
console.log('complete')
}
);
但是任何在该数组上使用 forEach 进行迭代然后进行所有 http 调用的尝试都会给我这个错误:
browser_adapter.js:84 EXCEPTION: TypeError: Cannot read property 'Symbol(Symbol.iterator)' of undefined
理想情况下,我想要一种优雅的方式来使这些后续调用与第一次调用的结果数组并行,但我似乎无法弄清楚 rxJs 的数十种方法中的哪一种可以帮助我做到这一点。谁能给我任何帮助?