angular - 为 Angular POST 请求实现错误处理的问题
问题描述
由于某种原因,我的 Angular 代码无法正确处理 POST 请求的错误条件。
对于上下文,相关调用位于 component.ts 中:
this.crazyService.addSomething(stringifiedContent).subscribe(
data => {
console.log(data);
this.showSuccess();
setTimeout(() => {
this.dashboardRedirect();
}, 2750);
}
)
在“crazyService”中,代码是
addSomething(something: any): Observable<any> {
const headers = { 'content-type': 'application/json' };
const body = JSON.stringify(something);
return this.http
.post<any>(this.relevantUri, body, { headers, observe: 'response' })
.pipe(
catchError(err => {
console.error(err);
throw err;
})
);
}
POST 请求工作正常,但由于某种原因,console.log(data)、this.showSuccess() 和 timeOut 在这里不起作用。
而当我在我的组件中执行此操作时:
this.crazyService.addSomething(stringifiedContent).subscribe( hello => {
console.log(hello);}
, data => {
console.log(data);
this.showSuccess();
setTimeout(() => {
this.dashboardRedirect();
}, 2750);
}
)
它进入数据部分并执行我想要的操作,而在前面的示例中它似乎没有进入该块。
为什么会这样?我该如何解决这个问题,以便我可以有一个案例来说明 POST 请求何时成功,以及另一个案例何时出现错误?
解决方案
已修复 - 原来我在 Django 后端遇到了问题。我在后端发送了一个字符串作为 201 的 HTTPResponse 而不是 JSON。Angular 将其解析为 JSON,这会导致响应为错误,这就是为什么它没有进入我希望它进入的地方。
推荐阅读
- amazon-web-services - 为什么我在尝试将 SNS 触发器添加到我的 AWS Lambda 函数时会收到错误消息?
- python - 在 Python 中使用数组更快的 for 循环
- r - 特定行的 R 平均值
- ios - 在 Realm Swift 对象模型上更改主键属性名称
- javascript - 如何将 AddEventListener 应用于创建的元素?
- c++ - 为什么在使用 boost rtree 最近查询时会出现编译错误?
- javascript - 此 Firebase onAuthStateChanged 如何在此代码中工作
- java - 如何在 AnyLogic 中选择通过网络中另一个代理连接的最近代理?
- javascript - 在 javascript 中从数据库中操作 CQL 参数
- inheritance - Odoo - 视图中的多级继承