代码之家  ›  专栏  ›  技术社区  ›  Silvino Miranda

如何使用RxJS在Angular中组合多个HTTP调用?

  •  0
  • Silvino Miranda  · 技术社区  · 2 年前

    我正试图在我的Angular服务中同时进行多个HTTP调用,我想将响应组合到一个对象中。我如何使用RxJS做到这一点?

    import { Injectable } from '@angular/core';
    import { HttpClient } from '@angular/common/http';
    import { Observable } from 'rxjs';
    
    @Injectable({
       providedIn: 'root'
    })
    export class DataService {
       constructor(private http: HttpClient) {}
    
       getData1(): Observable<any> {
         return this.http.get('https://api.example.com/data1');
       }
    
       getData2(): Observable<any> {
         return this.http.get('https://api.example.com/data2');
       }
    }
    
    1 回复  |  直到 2 年前
        1
  •  0
  •   Wasif Mustahid    2 年前

    通过使用分叉连接

    getCombinedData(): Observable<any> {
         return forkJoin([this.getData1(), this.getData2()]);
       }
    
    combineData() {
        this.dataService.getCombinedData().subscribe((responses) => {
          const [data1, data2] = responses;
        });
    

    通过使用concatMap:使用concatMap进行连续的HTTP调用并组合它们的结果。当您希望确保一个接一个地进行呼叫时,这非常有用。

    推荐文章