【发布时间】:2018-05-09 21:59:12
【问题描述】:
我编写了一个简单的休息服务作为后端,我从我的前端 Angular 网页调用它。下面是进行调用的前端代码。 无论是否给出了有效的人,promise 都会被拒绝并显示错误消息。
savePerson(person: Person) {
const jsonHeader = 'application/json';
const jsonPerson = JSON.stringify(person);
return new Promise((resolve, reject) => {
this.httpClient.post(this.url, jsonPerson, {
headers: new HttpHeaders()
.set('Accept', jsonHeader)
.set('Content-Type', jsonHeader)
})
.toPromise()
.then(
res => { // Success
console.log("success");
resolve(res);
},
res => {
console.log("rejected");
reject(res)
}
);
});
}
此代码在用户按下按钮后被调用:
savePerson() {
this.myService.savePerson(this.person).then(
result => {
this.showMessage("Saved");
},
error => {
console.log(error);
this.showMessage("Error when saving")
}
);
}
记录的错误(输入有效人员): Object { headers: {…}, status: 201, statusText: "Created", url: "http://localhost:8080/api/v1.0/person", ok: false, name: "HttpErrorResponse", message: "Http error during parsing for http://localhost:8080/api/v1.0/person", 错误: {…} }
我假设这是前端应用程序的问题,因为后端返回创建的 HTTP 201。 如果有人能为我找出问题所在,那就太好了!
【问题讨论】:
-
error: {…}说什么? -
对于它的价值,该代码正在成为the Promise creation anti-pattern 的牺牲品。那里根本不需要
new Promise。
标签: javascript angular rest promise