Javascript 承诺总是被拒绝
我已经编写了一个简单的rest服务作为后端,我从我的前端网页调用它。下面是拨打电话的前端代码。 无论是否提供了有效人员,承诺都会被拒绝,并显示错误消息Javascript 承诺总是被拒绝,javascript,angular,rest,promise,Javascript,Angular,Rest,Promise,我已经编写了一个简单的rest服务作为后端,我从我的前端网页调用它。下面是拨打电话的前端代码。 无论是否提供了有效人员,承诺都会被拒绝,并显示错误消息 savePerson(person: Person) { const jsonHeader = 'application/json'; const jsonPerson = JSON.stringify(person); return new Promise((resolve, reject) => {
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")
}
);
}
输入有效人员时记录的错误:
对象{标头:{…},状态:201,状态文本:已创建,url:,确定:false,名称:HttpErrorResponse,消息:解析期间Http失败,错误:{…}
我假设这是前端应用程序的问题,因为后端返回创建的HTTP 201。
如果有人能帮我找出问题,那就太好了 Angular正在尝试解析HTTP响应,我猜您的服务器正在以空白HTTP响应进行应答。告诉Angular响应只是文本应该修复错误:
this.httpClient.post(this.url, jsonPerson, {
responseType: 'text',
headers: new HttpHeaders()
.set('Accept', jsonHeader)
.set('Content-Type', jsonHeader)
})
错误:{…}说明了什么?不管它值多少钱,这段代码都成了牺牲品。根本不需要新的承诺。避免新的承诺!