Давайте представим, например, что у нас определен angular 8 клиентский компонент (componentA), который зависит от метода (getPeople), определенного в сервисе (serviceA).
serviceA.getPeople в свою очередь вызывает Конечная точка http (остальные API). Возможно, что ответ http от внешнего API возвращает ошибку (скажем, 500)
Как мы можем спроектировать serviceA и componentA таким образом, чтобы componentA мог реагировать так, как он считает нужным? (вместо того, чтобы, скажем, сделать так, чтобы служба A определяла, как реагировать на ошибки для ВСЕХ клиентов / абонентов)
Вот 1 способ, которым я верю, что этого можно достичь. В serviceA есть метод, определенный как
getPeople(): Observable<IPeople[]> {
return this.http.get<IPeople[]>(url)
}
И в componentA , настройте вызывающего абонента как
this.serviceA.getPeople().subscribe(
(response) => {
// Do something with response
},
(errorResponse) => {
// Handle error in way component wants to handle it
// ex. Show toast message saying "Error in obtaining people. Please
// refresh to try and obtain people again." Something like that
}
);
Есть ли какие-либо разумные недостатки этого подхода? Кроме того, какими еще способами можно организовать код, чтобы вызывающий абонент (компонент A) имел полный контроль над тем, как он реагирует на ошибки, и в то же время разрабатывал услугу A для других вызывающих абонентов?
Подход Я выше описал лучший способ решения этой проблемы?