Я думаю, что важный вопрос заключается в том, что должно происходить одновременно. Из вашего описания кажется, что вы хотите подождать, пока все записи не будут сохранены в первичной базе данных. Только после этого вы хотите хранить данные в других базах данных, и вам, вероятно, все равно, в каком порядке.
Так что с использованием Observable.forkJoin()
хорошо, я бы просто связал его с concatMap
или mergeMap
в зависимости от того, что вы хотите сделать. Тогда все внутренние Обсерватории могут быть объединены, я думаю.
Observable.forkJoin([obs1, obs2, obs3])
.concatMap(responses => {
const observables = [];
for (let i=0; i<this.allDatabases; i++) {
observables.push(saveUser(...), saveRoles(...), ...);
}
return Observable.merge(Observable.from(responses), ...observables);
})
.subscribe({
next: response => console.log(response),
error: err => console.log(`It's broken`, err),
complete: () => console.log('All done'),
});
Это, конечно, во многом зависит от того, что вы хотите сделать, но я надеюсь, что вы поймете.