如何进行多个http.get调用?

问题描述 投票:0回答:1

我有一个包含两个非常简单的http.get()调用,即.getSomething().getSomethingNext()的服务,它们返回类型Observable<any>(这些端点返回一个对象数组)。

然后我有了一个调用.getSomething()的函数。像这样:

getArrays(): Observable<customResult>{

    return this.service.getSomething(a, b).pipe(map(item => {

      let something = item.map(name => {...}}
}

如果第一个端点返回一个空数组,我想调用第二个也返回一个数组的端点。

[如何在我的服务中创建第三个函数,先调用.getSomething(),然后调用.getSomethingNext(),然后返回一个可观察的数组(就像单独调用http.get一样),如果第一个方法返回一个空数组?

angular rxjs angular-httpclient
1个回答
0
投票

[我使用switchMap作为高阶运算符,避免了嵌套订阅,并在第一个数组为空的情况下使用三元运算符进行了测试,仅在这种情况下才请求第二个数组。

getArrays(): Observable<customResult>{
  return this.service.getSomething(a, b).pipe(
    switchMap(arr => 
      arr.length === 0 ?
      this.service.getSomethingNext(args) :
      of(arr)
    );
});

getArrays().subscribe(..)

© www.soinside.com 2019 - 2024. All rights reserved.