angular - 如何在 Angular 7 中使用管道强制执行 http 请求中的顺序

标签 angular http sequence angular7

我有一个组件,可以调用一些对不同 url 的 http 请求。每个请求都作为可观察对象实现。

getIds():Observable<any[]> {
   return this.http
    .post(url1, '')
    .pipe(map(({ Ids}: any) => Ids.map(item => ({Id: item.Id }))));
    }

getNames(data: Names):Observable<any[]> {
   return this.http
    .post(url2,element)
    .pipe(map(({ Results }: any) => Results[0].map(item => ({id: item.ID, name: item.CVSS}))));
    }

从组件中,我需要做,

ngOnInit() {
  this.Ids = this.getIds();
  Ids.forEach(function(element) 
     this.getNames();
}

有人可以告诉我如何执行此命令吗?

最佳答案

从 RXJS 导入 switchMap

import { switchMap } from 'rxjs/operators'

然后通过管道传输到返回的可观察到的 map

this.getIds().pipe(
  switchMap((id: string) => this.getNames(id))
).subscribe((response) -> {
  console.log(response)
})

关于angular - 如何在 Angular 7 中使用管道强制执行 http 请求中的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53217352/

相关文章:

angular - 动态添加和删除 Angular 5 Material 属性 'multiple'

angular - 如何使用 Angular 2 组件中的路由器打开新的浏览器选项卡?

python - HTTP 状态代码 200 与 202

android - api.ai - 禁止 GET/INTENTS 查询 -

c# - 如何在 .NET 中下载大文件(通过 HTTP)?

language-agnostic - 编写一个应用程序来确定数字序列是否已排序

angular - TypeScript 提示 array.map 不存在于字符串 [] 类型的数组中

javascript - 如何在 Angular 2 中使用 vanilla js/es6 的 bootstrap?

c - 将元素添加到 C 结构体序列的前面

algorithm - 这个序列生成问题的名称是什么?任何意见?