Я работаю над Pokedex, используя PokeAPI. Я получаю массив эволюции покемонов, который выглядит следующим образом.
https://pokeapi -215911.firebaseapp.com / апи / v2 / эволюция цепи / 10
Затем я пытаюсь вернуть модель, подписавшись на другой метод для возврата спрайтов покемонов. Моя проблема заключается в том, что метод подписки заканчивается в неправильном порядке, поэтому я получаю цепочку, которая иногда идет Венусавр> Бульбазаур> Ивисаур вместо Бульбазаура> Ивисаура> Венусаура. Как я могу получить их в правильном порядке?
private loopThroughEvolutionChain(chain: any): any {
let evoChain: PokemonEvolution[] = [];
let evoData = chain.chain;
let index: number = 1;
do {
let evoDetails = evoData['evolution_details'];
this.getPokemonEvolutionDetails(evoData.species.name).subscribe((pkmn: any) => {
evoChain.push(new PokemonEvolution(index, pkmn.name, pkmn.sprites.front_default, pkmn.sprites.front_shiny));
index++;
});
evoData = evoData['evolves_to'][0];
} while (!!evoData && evoData.hasOwnProperty('evolves_to'));
return evoChain;
}
Обновлен 04.11.19 с getPokemonEvolutionDetails
private getPokemonEvolutionDetails(name: string) {
let apiUrl = `${this.apiBaseUrl}/pokemon/${name}`;
return this._httpClient.get(apiUrl).pipe(
map((response: any) => {
return response;
})
);
}