add less 6 handleError

This commit is contained in:
Костя 2025-06-24 09:21:53 +03:00
parent 1e585195e9
commit 033b12ef11
1 changed files with 28 additions and 8 deletions

View File

@ -4,6 +4,7 @@ import { HEROES } from './mock-heroes';
import { Observable, of } from 'rxjs';
import { MessageService } from './message.service';
import { HttpClient } from '@angular/common/http';
import { catchError, map, tap } from 'rxjs/operators';
@Injectable({
providedIn: 'root'
@ -18,15 +19,11 @@ export class HeroService {
private messageService: MessageService)
{ }
// getHeroes(): Observable<Hero[]> {
// const heroes = of(HEROES);
// this.messageService.add('HeroService: fetched heroes');
// return heroes;
// }
/** GET heroes from the server */
getHeroes(): Observable<Hero[]> {
return this.http.get<Hero[]>(this.heroesUrl)
return this.http.get<Hero[]>(this.heroesUrl)
.pipe(
catchError(this.handleError<Hero[]>('getHeroes', []))
);
}
getHero(id: number): Observable<Hero> {
@ -37,8 +34,31 @@ export class HeroService {
return of(hero);
}
/**
* Handle Http operation that failed.
* Let the app continue.
*
* @param operation - name of the operation that failed
* @param result - optional value to return as the observable result
*/
private handleError<T>(operation = 'operation', result?: T) {
return (error: any): Observable<T> => {
// TODO: send the error to remote logging infrastructure
console.error(error); // log to console instead
// TODO: better job of transforming error for user consumption
this.log(`${operation} failed: ${error.message}`);
// Let the app keep running by returning an empty result.
return of(result as T);
};
}
/** Log a HeroService message with the MessageService */
private log(message: string) {
this.messageService.add(`HeroService: ${message}`);
}
}