Вы можете запустить несколько наблюдаемых последовательно, используя функцию concat
.
concat(
obs1$,
obs2$
).subscribe(result => {
console.log(result);
});
Если каждая наблюдаемая возвращает 1 результат и завершается (запрос http), то подписчик получит 2 значения - результат obs1$
, а затем результат obs2$
.
Если вы хотите подождать, пока оба результата вернут результат, вы можете использовать функцию toArray
.
concat(
obs1$,
obs2$
).pipe(
toArray()
).subscribe(result => {
console.log(result);
});
Результат в подписка теперь будет массивом obs1$
результата и obs2$
результата.
Ваши требования немного сложнее, потому что у вас есть исходная наблюдаемая, а затем массив наблюдаемых. Если вы хотите запустить свой массив наблюдаемых последовательно, то вы можете заранее создать массив наблюдаемых и передать их в concat.
const trailerComparisons$ = this.trailerComparisons.map(c =>
this.trailerComparisonService.saveReviewComplete(c.trailerComparisonId)
);
concat(
this.updateUserCommentsObservable(),
...trailerComparisons$
).pipe(
toArray()
).subscribe(/* subscribe handling */)
DEMO: https://stackblitz.com/edit/angular-jldrrh