forkJoin 不适用于 Angular 6 中的动态 URL 数组和 POST 对象

Ani*_*udh 5 fork-join rxjs angular

这是我的技术堆栈

角度 - 6.1.2

打字稿 - 2.7.2

rxjs-6.2.2

这是我在 Angular 中 forkJoin 方法的代码。后端正在调用 post 请求。但参数没有被传递。

  import { Observable } from 'rxjs';
  import 'rxjs/add/observable/forkJoin';

        reqArray = [];

        for (let i = 0; i < this.array.length; i++) {

            if(array[i]==true)
            {
                let obj = { name: 'Test', status: array[i] };

                this.reqArray.push(this.http.post(url, { params: obj }).pipe(map((res: Response) => res)));

            }

      }




forkJoin(this.reqArray).subscribe(
       data => {


            console.log(data);

       },
       err => console.error(err)
    );
Run Code Online (Sandbox Code Playgroud)

也尝试过这种方法,但我得到了相同的答复。

    Observable.forkJoin(this.reqArray).subscribe(
       data => {

             console.log(data);

       },
       err => console.error(err)
    );
Run Code Online (Sandbox Code Playgroud)

当我以静态方式在没有 for 循环的情况下传递数据时,它工作得很好。

    forkJoin(
        this.http.get(url, { params: obj }).pipe(map((res: Response) => res)),
        this.http.get(url, { params: obj2 }).pipe(map((res: Response) => res)),
        this.http.get(url, { params: obj3 }).pipe(map((res: Response) => res)),
        this.http.get(url, { params: obj4 }).pipe(map((res: Response) => res))

    ).subscribe(
        data => {

            console.log(data);

        });
Run Code Online (Sandbox Code Playgroud)

但是,就我而言,我必须根据一些条件创建 URL 数组,因此不可能静态添加它。

我应该在我的代码中更改什么?

Adr*_*and 3

你需要分散数组

forkJoin(...this.reqArray)
Run Code Online (Sandbox Code Playgroud)