Вы можете использовать mergeMap()
вместо map (), возвращение подписки не поможет.
Независимо от того, что мы вернем в map()
, это будет значение, полученное при успешном обратном вызовеподписка. Мы не можем получить значения из объекта подписки.
В mergeMap
мы возвращаем Observable, который будет объединен с родительской наблюдаемой, и мы можем получить значение объединенной наблюдаемой, используя одну подписку.
import { forkJoin, of, timer } from "rxjs";
import { map, mergeMap } from "rxjs/operators";
let array = [of({ data: [1] }), of({ data: [2] })];
const init = of({ pages: 2 });
function gerData() {
const observable = forkJoin(array);
return init.pipe(
mergeMap(data => {
return observable.pipe(map(data => {
const arr = [];
data.forEach(x => {
arr.push(...x.data);
});
console.log('array', arr);
return arr;
}));
})
);
}
gerData().subscribe((data) => {
console.log('final data: ', data);
})
https://stackblitz.com/edit/zj3mhp-elrkur?file=index.ts