Return switchMap inner 产生一个类似 forkJoin 的数组

Return switchMap inner results in an array like forkJoin

我想 运行 一个接一个地观察一组数据,因为每个结果都取决于前一个。 但是,最后我还需要所有中间结果,因为当我们在数组中使用 forkJoin - 时会给出它们。

我有以下代码:

     getData$ = getResponses$
            .pipe(
              switchMap((data_1) => {
                return getResponse_1$;
              })
            )
            .pipe(
              switchMap((data_2) => {
                return getResponse_2$;
              })
            );

getResponse_2$ 取决于 getResponse_1$ 和 getResponse_1$ 取决于 getResponses$

我想要最终结果,即 getData$ 是中间结果的数组(如 forkJoin)。 有这样的方法吗?

您可以尝试以下操作:

// Let's consider that you have the following observables:
const getResponses$ = of('Text');
const getResponse_1$ = of(1);
const getResponse_2$ = of(true);

// The type of getData$ will be: Observable<[data: string, data_1: number, data_2: boolean]>
const getData$ = getResponses$.pipe(
  switchMap((data) =>
    getResponse_1$.pipe(map((data_1) => ({ data, data_1 })))
  ),
  switchMap(({ data, data_1 }) =>
    getResponse_2$.pipe(
      map((data_2) => {
        const res: [data: string, data_1: number, data_2: boolean] = [
          data,
          data_1,
          data_2,
        ];
        return res;
      })
    )
  )
);