首页 > 解决方案 > rxjs 连续动态数量的 api 调用

问题描述

尝试创建将执行以下操作的 rxjs 管道:本质上,我有一个动态数量的 API 调用数组。每次我需要进行新的 API 调用时,我都会将其推送到数组中。

然后,我将数组转换为 RXJS switchmap 操作符数组。(呼叫的顺序无关紧要,只是我需要在前一个呼叫完成后拨打一个电话,而不是同时)。

最后,我尝试在管道内传播 rxjs 运算符数组:

const obsArray = [randomQuote(), getCatFacts(4), recipeSearch('oil')]
const OperatorWrap = obsArray.map((obs) => {
  return rxops.switchMap((val) => { return obs })
})



const pipeline= of(1).pipe(...OperatorWrap);

但我收到一条奇怪的错误消息: 在此处输入图像描述

标签: rxjs

解决方案


concatAll这就是你需要的

concatAll- 收集 observables 并在上一个完成时订阅下一个。

我做了一个例子: https ://stackblitz.com/edit/angular7-rxjs-jy2gda?file=src/app/app.component.ts

    const APIs = [
      `https://jsonplaceholder.typicode.com/todos/1`,
      `https://jsonplaceholder.typicode.com/todos/2`,
      `https://jsonplaceholder.typicode.com/todos/3`,
      `https://jsonplaceholder.typicode.com/todos/4`
    ].map(url => this.http.get(url));
    from(APIs)
      .pipe(concatAll())
      .subscribe();

在此处输入图像描述


推荐阅读