【问题标题】:rxjs mergemap with response which returns an array带有返回数组的响应的 rxjs 合并映射
【发布时间】:2021-08-25 08:47:59
【问题描述】:

我有一个 ajax 请求,它返回一个链接数组。我需要使用这个数组在数组中的每个链接再次发送一个 ajax 请求,然后加入所有内部 ajax 请求的响应。

我已经开始喜欢了

ajax.post( url, data ).pipe(
 tap(response) // Array of links
)

【问题讨论】:

    标签: node.js angular rxjs


    【解决方案1】:

    您可以使用 RxJS switchMap 操作符从一个 observable 映射到另一个,并使用 forkJoin 函数和 JS Array#map 来并行触发所有请求。

    import { forkJoin } from 'rxjs';
    import { ajax } from 'rxjs/ajax';
    import { switchMap } from 'rxjs/operators';
    
    ajax.post(url, data).pipe(
      switchMap(links => 
        forkJoin(links.map(link => 
          ajax.get(link)
        ))
      )
    ).subscribe({
      next: (response: any) => {
        console.log(response);
      },
      error: (error: any) => {
        // handle error
      }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-13
      • 1970-01-01
      • 1970-01-01
      • 2019-11-20
      • 1970-01-01
      • 2018-01-28
      • 2023-03-14
      • 1970-01-01
      相关资源
      最近更新 更多