Мне нужно подписаться на результат, но дождаться завершения промежуточных операций, прежде чем получить результат.Хитрость в том, что я «посещаю» свой результат, чтобы заполнить его:
// a service that gets a model
service.getModel(): Observable<MyModel>;
// I need to enrich my model before consuming it
service.getModel()
.makeSureAllCodesAreFetched(data => visitModel(model))
.subscribe(data => console.log("data is ready: ", data));
// a visitor that visits the model tree and enriches the leaves
// recursively visit the branches
visitModel(model: MyModel) {
if (model.isLeaf) {
// on condition, call a service to fetch additional data
service.fetchCodes(model.codeKey).subscribe(codes => model.codes = codes);
} else {
model.properties.forEach(prop: MyModel => visit(prop));
}
}
Я попытался поиграть с слияниями и forkJoin () безуспешно.Я просто хочу убедиться, что все вызовы fetchCodes()
, независимо от результата, выполняются до того, как мои данные будут подписаны.