【问题标题】:Rxjs: Execute a list of async operation one after the other and wait until finishRxjs:一个接一个地执行一系列异步操作并等待完成
【发布时间】:2018-07-17 12:18:14
【问题描述】:

有一个请求列表(url 字符串)一个接一个地运行并等待最后一个完成。原因是,每个请求对后端来说都是昂贵的。

是否可以在 RxJs 中编程?

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

谢谢

【问题讨论】:

    标签: angular rxjs


    【解决方案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 个请求。

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

    【讨论】:

    • 运行并发设置为 1 的 mergeMap 实际上与运行 concatMap 相同;)
    猜你喜欢
    • 2015-11-09
    • 2016-09-09
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多