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;
})
)
)
);
我想 运行 一个接一个地观察一组数据,因为每个结果都取决于前一个。
但是,最后我还需要所有中间结果,因为当我们在数组中使用 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;
})
)
)
);