rxjs - 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);
解决方案
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();
推荐阅读
- javascript - 如何将大写转换为存储在switch语句内的变量中的小写
- angular - Angular 6 SyntaxError:JSON.parse 中位置 0 的 JSON 中的意外标记 <
- python - 从两个表中选择主键
- python - Python matplotlib:图例给出了错误的散点结果
- animation - 从 lineto 到三次贝塞尔曲线命令的 SVG 路径动画
- javascript - 定义 API GATEWAY 列表类型参数
- powershell - 我如何知道谁重命名了活动目录中的特定组?
- node.js - 从 Heroku 开始。身份验证问题
- java - onCreate 运行了两次,因为我在应用程序启动时设置了语言环境?
- javascript - 使用不带表单的 dropzone.options