是否有任何解决方案可以一次从不同的 api 获取数据
is there any solution to get data from different api at once
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)
}
}
}
我想像这样从apihttps://pokeapi.co/api/v2/pokemon/1, https://pokeapi.co/api/v2/pokemon/2获取数据
是的,你可以这样做:
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));
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)
}
}
}
我想像这样从apihttps://pokeapi.co/api/v2/pokemon/1, https://pokeapi.co/api/v2/pokemon/2获取数据
是的,你可以这样做:
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));