Скажем, я динамически создаю массив наблюдаемых:
let obsArray = dataArray.map((data) => observableFunc(data))
Я хочу выполнить каждую из этих наблюдаемых в порядке, выполняя obsArray [n + 1] только после того, как obsArray [n] завершит. Выполнение следующего наблюдаемого НЕ зависит от результата предыдущего наблюдения.
После того, как все наблюдаемые в массиве завершены, я хочу вернуться из функции, которая обрабатывает этот массив наблюдаемых.
По сути, я хотел бы найти такой метод, как forkJoin, который обеспечивает последовательное выполнение.
Как уже упоминалось, оператор concat
может выровнять испускаемые значения в строке. Вы можете передать массив наблюдаемых на него следующим образом (спасибо для оператора ES6 spread!):
const obsArray = [
Rx.Observable.of(1, 2, 3),
Rx.Observable.of(4, 5, 6),
Rx.Observable.of(7, 8, 9)];
const example = Rx.Observable.concat(...obsArray);
// or using old apply method
// Rx.Observable.concat.apply(this, obsArray);
// prints: 1,2,3,4,5,6,7,8,9
const subscribe = example.subscribe(val => console.log(val));