当 httpClient 失败时 returns 错误回调中的可观察错误而不是错误对象
when httpClient fails it returns an observable error in the error callback instead of an error object
使用 angular6 的典型 HttpClient 服务,我正在努力检索错误输出作为错误回调中的对象,而不是它的可观察对象。
...
}, (e) => {
HttpErrorHandling.process(e, this.messageService, this.loggerService, () => {
this.messageService.send(NotificationMessage['USER_REGISTRATION_TECHNICAL_ERROR'], MessageTypes.error);
});
});
});
当我想检索错误状态时,这不适合我的情况,当我尝试使用 err.status 获取错误状态时,它是未定义的,因为我是在一个可观察的
上进行的
class HttpErrorHandling
public static process(err: HttpErrorResponse, messageService: MessageService, logger: LoggerService, callback: any) {
switch(err.status) {
case HttpStatusCodeEnum.HttpFailure: {
// Http failure, no internet connection
this.handleError(err.name, logger, null);
break;
}
...
如果我改为像这样订阅可观察到的错误,我会将错误作为对象检索,但这很混乱并且不利于性能(嵌套订阅)。还有其他方法可以解决这个问题吗?
}, (e) => {
e.subscribe(
err => HttpErrorHandling.process(err, this.messageService, this.loggerService, () => {
this.messageService.send(NotificationMessage['USER_REGISTRATION_TECHNICAL_ERROR'], MessageTypes.error);
})
});
});
});
我可能应该得到 1 票的反对票,我知道没有提供很多代码,我的原因是它的公司代码。简而言之,我没有看到的是有人改变了我们应该如何 return 一个错误,没有测试背后的含义,因为如果没有明确地向 QA 表达,谁真正测试失败的 http 请求。无论如何,有人决定 return 对于我在代码其他地方使用的服务的错误:
catchError((err) => {
throw of(err);
})
我所要做的就是删除 of 方法,而只是 return err。
不确定为什么人们会 return 错误作为可观察的。
使用 angular6 的典型 HttpClient 服务,我正在努力检索错误输出作为错误回调中的对象,而不是它的可观察对象。
...
}, (e) => {
HttpErrorHandling.process(e, this.messageService, this.loggerService, () => {
this.messageService.send(NotificationMessage['USER_REGISTRATION_TECHNICAL_ERROR'], MessageTypes.error);
});
});
});
当我想检索错误状态时,这不适合我的情况,当我尝试使用 err.status 获取错误状态时,它是未定义的,因为我是在一个可观察的
上进行的class HttpErrorHandling
public static process(err: HttpErrorResponse, messageService: MessageService, logger: LoggerService, callback: any) {
switch(err.status) {
case HttpStatusCodeEnum.HttpFailure: {
// Http failure, no internet connection
this.handleError(err.name, logger, null);
break;
}
...
如果我改为像这样订阅可观察到的错误,我会将错误作为对象检索,但这很混乱并且不利于性能(嵌套订阅)。还有其他方法可以解决这个问题吗?
}, (e) => {
e.subscribe(
err => HttpErrorHandling.process(err, this.messageService, this.loggerService, () => {
this.messageService.send(NotificationMessage['USER_REGISTRATION_TECHNICAL_ERROR'], MessageTypes.error);
})
});
});
});
我可能应该得到 1 票的反对票,我知道没有提供很多代码,我的原因是它的公司代码。简而言之,我没有看到的是有人改变了我们应该如何 return 一个错误,没有测试背后的含义,因为如果没有明确地向 QA 表达,谁真正测试失败的 http 请求。无论如何,有人决定 return 对于我在代码其他地方使用的服务的错误:
catchError((err) => {
throw of(err);
})
我所要做的就是删除 of 方法,而只是 return err。 不确定为什么人们会 return 错误作为可观察的。