Есть ли решение, чтобы получить данные из разных API одновременно - PullRequest
0 голосов
/ 26 апреля 2020

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Injectable({
  providedIn: 'root'
})
export class PokemonDataService {

  pokeData = 'https://pokeapi.co/api/v2/pokemon/'
  pokeUrl = 'https://pokeapi.co/api/v2/pokemon?limit=151'
  constructor(private http:HttpClient) { }

  getPoke(){
    return this.http.get<any>(this.pokeUrl)
  }
  getData(){
      for(let i=1;i<152;i++){
        return this.http.get<any>(this.pokeData+i)
      }
  }
  
}

Я хочу получить данные от API https://pokeapi.co/api/v2/pokemon/1, https://pokeapi.co/api/v2/pokemon/2 как этот

1 Ответ

0 голосов
/ 26 апреля 2020

Да, вы можете сделать это:

getData(): Observable<any[]>{
  const observables: Array<Observable<any>> = [];
  for(let i=1;i<152;i++){
    const obs: Observable<any> = this.http.get<any>(this.pokeData+i)
        .pipe(catchError(err => of({})));
    observables.push(obs);
  }

  // returns when all the observables emit
  return forkJoin(observables);
}

, и вы можете использовать так:

getData().subscribe((pokemons: any[]) => console.log(pokemons.length));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...