Это упрощение сложного случая, когда некоторые наблюдаемые в массиве могут быть отфильтрованы, если значения недопустимы. Проблема в том, что отфильтрованная наблюдаемая не позволяет другому завершить объединение. Какой оператор или подход может обработать этот случай, разрешив действительный журнал данных в подписке?
// RxJS v6+
import { fromEvent, combineLatest, of } from 'rxjs';
import { mapTo, startWith, scan, tap, map, filter } from 'rxjs/operators';
const userData$ = [
of({ name: 'Joseph', age: 23}),
of({ name: 'Mario', age: 33}),
of({ name: 'Robert', age: 24}),
of({ name: 'Alonso', age: 25})
];
const names = ['Joseph', 'Mario', 'Robert', 'Alonso'];
combineLatest(
names.map((name, i) => {
return userData$[i].pipe(
map(({name, age})=> { return{ name, age: age * 2} }),
filter(({age}) => age < 67),
map(({name, age})=> { return{ name: name.toLocaleUpperCase(), age} }),
)
})
)
.pipe(
tap(console.log),
)
.subscribe();
Образец в stackblitz
Если мы изменим значение на 67, то все наблюдаемые покажут данные.