angular - RxJS 如何按顺序发出 POST 请求,只有在前一个请求完成后才会触发新请求?

标签 angular rxjs

这是一个简化的场景:

   of([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
  .pipe(
    map((data) => {
      let arr: Observable<any>[] = [];

      for (let elem of data) {
        let obj = {
          title: 'foo' + 'elem',
          body: 'bar' + 'elem',
          userId: elem,
        };

        arr.push(
          this.http.post(
            `https://jsonplaceholder.typicode.com/posts`,
            obj,
            {
              headers: {
                'Content-type': 'application/json; charset=UTF-8',
              },
            }
          )
        );
      }

      return arr;
    }),
    concatMap((data) => forkJoin([...data])),
  )
  .subscribe((data) => console.log(data));

我的理解是,在这种情况下,所有请求都将并行触发,因为这就是 forkJoin([...data]) 的作用。我试图弄清楚如何仅在前一个请求完成(成功或失败,无关紧要)的情况下才触发请求。

如果有任何建议或帮助,我将不胜感激。谢谢。

最佳答案

只需使用 concat 而不是 forkJoin

concatMap((data) => concat(data)),

关于angular - RxJS 如何按顺序发出 POST 请求,只有在前一个请求完成后才会触发新请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76546943/

相关文章:

javascript - Angular 12 将外部脚本加载为类型模块

javascript - 未捕获( promise ): Error: Cannot match any routes. URL 段:

javascript - 等待异步方法完成

angular - 如何遍历 rxjs 过滤器运算符中的子类别

javascript - rxjs/订阅没有导出成员 'Subscription'

angular - 如何在 Ngrx 效果中参数化 Rx delay() 函数?

angular - 找不到API编译器-cli,函数版本

rxjs - 在 rxjs 中链接两个依赖的 observables

angular - 如何通过间隔运算符发送请求?

rxjs - 如何创建一个无限的 Observable 以随机间隔生成随机数?