Rxjs:依次执行一系列异步操作,直到完成

时间:2018-07-17 12:18:14

标签: angular rxjs

有一个请求列表(URL字符串),这些列表一个接一个地运行,等到最后一个完成为止。原因是,每个请求对于后端来说都是昂贵的。

可以在RxJ中进行编程吗?

return Observable.from([list of urls])
  // ???
  .switchMap((url: string) => {
     return this.http.get(url)
  }).
  // wait until last is finish

使用:

  • Angular 5.x
  • RxJS 5.5

谢谢

1 个答案:

答案 0 :(得分:1)

您可能正在寻找的是这样的东西

return Observable.from([list of urls])
  .mergeMap((url: string) => {
     return this.http.get(url)
  }, 1)
.subscribe(result => // do something with the result)

考虑mergeMap的第二个参数。该参数设置运算符的并行度。将其设置为1意味着此时将仅处理1个请求。

如果您认为服务器可以并行处理更多请求,则可以更改该参数。