【发布时间】:2020-10-30 21:32:06
【问题描述】:
我有一个 Angular 项目,它使用 RXJS observables。一切都很好,除非我必须处理错误处理,但是当 API 返回错误时,永远不会调用错误回调。
this.http
.post(url, registerFormData)
.pipe(
catchError((err) => {
console.log(err);
return throwError(err);
})
)
.subscribe(
(res) => console.log('HTTP response', res),
(err) => console.log('HTTP Error', err),
() => console.log('HTTP request completed.')
);
// package.json
"@angular/animations": "^10.0.14",
"@angular/common": "~10.0.5",
"@angular/compiler": "~10.0.5",
"@angular/core": "~10.0.5",
"@angular/forms": "~10.0.5",
"@angular/localize": "~10.0.5",
"@angular/platform-browser": "~10.0.5",
"@angular/platform-browser-dynamic": "~10.0.5",
"@angular/router": "~10.0.5",
"@ng-bootstrap/ng-bootstrap": "^7.0.0",
"bootstrap": "^4.5.0",
"fs-extra": "^9.0.1",
"ng2-file-upload": "^1.4.0",
"ngx-toastr": "^13.0.0",
"rxjs": "~6.5.5",
"tslib": "^2.0.0",
"zone.js": "~0.10.3"
【问题讨论】:
-
你得到了什么
console.log输出? -
没有,它甚至没有调用
-
你写过任何我们可以检查的单元测试吗?它真的会抛出异常吗?
-
不,我自己制造了麻烦。事实证明,我的令牌拦截器拦截了所有 http 错误并且没有正确返回可观察到的错误,因此没有在订阅方法中调用错误回调