При возникновении ошибки любого запроса все функции перестают быть функциями. Например, есть сервис для работы с пользователями, у которого есть метод authorizationStatus:
authorizationStatus(): Observable<boolean> {
return this._httpClient.get<boolean>(ApiUrls.authorizationStatus)
.retry(retryConnectCount)
.catch(this._logService.handleServerError);
}
Если во время запроса происходит ошибка, то функция handleServerError начнет свою работу, но любая функция, вызванная из ее тела, выдаст ошибку. Например если в классе LogService
будут методы addError
и handleServerError
:
public addError(error: string) {
console.error(error);
}
public handleServerError(error: Response) {
console.error(error);
this.addError(error.statusText);
return Observable.throw(error.json().error || 'Server error');
}
То будет получена ошибка
this.addError is not a function
При том, что console.error(error);
сработает как нужно. Если закоментировать эту функцию, то выдаст ошибку на следующей функции:
error.json is not a function
Ошибка появляется при вызове любой нестандартной функции. Как мне решить эту проблему?
Сделайте так:
authorizationStatus(): Observable<boolean> {
const self = this;
return this._httpClient.get<boolean>(ApiUrls.authorizationStatus)
.retry(retryConnectCount)
.catch(self._logService.handleServerError);
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть форма отправки сообщения, есть поле email, из него нужно сделать поле с телефоном, и что бы телефон был в письме вместе с сообщением:
Почему возникает ошибка PHP Fatal error: Class 'user\login\SystemCommand\DateTime' not found in