Я пытаюсь создать промежуточный сервис между сервисом запроса и угловым компонентом, который подписывается на него.Чтобы добиться этого, я генерирую наблюдаемый запрос httpClient, который соединяется с промежуточной службой и отправляет ответ HTTP.
Когда ответ поступает в промежуточную службу, я генерирую другую наблюдаемую информацию, которая связывается с клиентским компонентом.Проблема начинается здесь.Когда я получаю 500
ответ о статусе от запроса, я получаю этот ответ в промежуточной службе, но когда я пытаюсь отправить клиентскому компоненту с subscribe.error(err)
, он запускает цикл, который никогда не заканчивается, получая следующую ошибку:
Вы указали неверный объект, где ожидался поток.Вы можете предоставить Observable, Promise, Array или Iterable.
Я использую тот же observer.error(err)
в службе запросов и в промежуточной службе, и она корректно работает только в запросе.
Request:
Observable.create((observer: Observer<any>) =>
this.httpClient
.request(httpRequest)
.subscribe(
...
(res: HttpErrorResponse) => {
observer.error(res);
observer.complete();
},
() => {
observer.complete();
},
}
Intermediate Service:
Observable.create((observer: Observer<any>) =>
this.requestService.request(requestServiceOptions).subscribe(
...
(err: HttpErrorResponse) => {
if (err.status === 401) {
this.callbackWhenRequestFails();
} else {
observer.error(err);
observer.complete();
}
}