Ищу помощь с последовательностью Observable http, я хочу сделать два http-вызова API, второй зависит от первого. Первый возвращает массив URL-адресов, а второй выполняет запросы на получение каждого URL-адреса в этом массиве, а затем возвращает ответы в потоке. Если я жестко запрограммирую один из зависимых запросов, например, я верну один из заголовков, которые я ищу:
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 мог бы помочь мне в этом. Может ли кто-нибудь предложить мне какую-либо помощь?
flatMap
должен возвращать Observable, но ваш код ничего не возвращает. Может быть, это проблема. - person Harry Ninh   schedule 22.07.2016