Если вы хотите, чтобы ваша цепочка Observables не только испускала результат конечной функции, но и отправляла результат каждого Observable, возвращаемого функцией между ними, вы можете использовать expand
для циклического перемещения по вашему массиву функций.
expand
сразу выдаст значение текущей наблюдаемой величины, а затем отобразит следующую наблюдаемую величину с ранее выделенным значением в качестве входных данных. Это будет продолжаться бесконечно, поэтому вам нужно остановить цикл, сопоставив его с EMPTY
.
import { of, EMPTY } from 'rxjs';
import { expand, skip } from 'rxjs/operators';
// initialValue is the value passed to the first function
of(initialValue).pipe(
expand((value, i) => i < fns.length ? fns[i](value) : EMPTY),
skip(1) // don't emit the initialValue
);