Предположим, у меня есть следующие источники:
ngOnInit(): void {
this._reloadData().pipe(finalize(() => { "do some work at the end"; })).subscribe(() => {});
}
private _reloadData(): Observable<{}> {
return new Observable(observer => {
if (confition1) {
this.service1.getData().subscribe(data1 => {
if (data1.Property1) {
this.service2.getData().subscribe(data2 => {
this.data = this.processData2(data2);
observer.next();
observer.complete();
}, error => {
observer.error(error);
observer.complete();
})
} else {
this.service3.getData().subscribe(data3 => {
this.data = this.processData3(data3);
observer.next();
observer.complete();
}, error => {
observer.error(error);
observer.complete();
});
}
}, error => {
observer.error(error);
observer.complete();
});
} else {
this.service4.getData().subscribe(data4 => {
this.data = this.processData4(data4);
observer.next();
observer.complete();
}, error => {
observer.error(error);
observer.complete();
});
}
});
}
В этом фрагменте кода есть несколько раздражающих мест, и в основном много вызовов observer.error
, observer.next
и observer.complete
.Это работает, но у меня есть ощущение, что это может быть сделано каким-то другим, более элегантным способом ... Можно ли его реорганизовать?Не предлагайте переносить эту логику на сервер, в моем случае это невозможно.