以下是一个简化的场景:

   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])所做的.我正在try 弄清楚如何才能在前一个请求完成(成功或失败,无关紧要)的情况下才能触发请求.

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

推荐答案

只需使用Concat而不是ForkJoin

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

Angular相关问答推荐

PrimeNG侧栏清除primeNG消息.为什么?

从Angular 14更新到15个多边形.ts问题

访问Angular 模板中的HTML元素属性

Angular 如何渲染ngFor?

升级到 Webpack 5.79.0 后 NX Angular 项目构建失败

无法使用@ngrx/component-store 在其他组件中获取状态更改值

将 autoSpy 与 ng-mocks 一起使用时,如何重置 jasmine 间谍调用?

如何访问父组件中提供的 TemplateRef 内的服务?

如何以Angular 显示动态视图模型

Rxjs Observable:仅为第一个订阅者获取 HTTP 数据,为其余订阅者获取缓存数据

如何在Angular2中基于特定的构建环境注入不同的服务?

使用 Angular2 将文件上传到 REST API

如何在 Angular CLI 1.1.1 版中将路由模块添加到现有模块?

如何在 ANGULAR 2 中提交表单时重置表单验证

Angular为 4 的可扩展表格行,带有Angularmaterial

如何提高 Angular2 应用程序的加载性能?

将外部 CSS 加载到组件中

如何在 Angular 应用程序中通过路由更改页面标题?

如何从materialAngular使用分页器?

Angular 2 输出到router-outlet