Я разрабатываю угловое 7 приложение.У меня есть HTTP-запрос с обработчиком ошибок, вызываемым в функции catchError.В обработчике ошибок мне нужно перевести код статуса http в удобное для пользователя сообщение, для этого я использую ngx-translate.Я хочу, чтобы обработчик ошибок возвращал Observable с переведенным сообщением об ошибке через функцию throwError.Для этого в обработчике ошибок я назначаю переменную в функции подписки TranslateService, поскольку операция является асинхронной, что является лучшим и более чистым способом убедиться, что переменная с переводом готова, прежде чем обработчик ошибок вернетнаблюдаемый?
postRequest(): Observable<any> {
return this.http.post<any>(reqUrl, body)
.pipe(...some transformations on data)
.catchError(this.handlerError.bind(this))
}
private handleError(error: HttpErrorResponse | any): Observable<any> {
let error_message = 'Generic error occurred';
let error_message_key = '';
switch (error.status) {
case 400:
error_message_key = 't.validation.bad_request';
break;
case 401:
error_message_key = 't.validation.login_credentials_invalid';
break;
case 403:
error_message_key = 't.validation.unauthorized';
break;
.....other cases
}
if (error_message_key !== '') {
this.translate.get(error_message_key).subscribe( t => {
error_message = t;
});
}
return throwError(error_message);
}