【发布时间】:2019-03-22 15:35:46
【问题描述】:
我收到一个 500 服务器错误(这是我预期的),但我当前的实现没有捕获该错误。该应用程序没有捕获组件中的错误并进行处理,而是在浏览器控制台中生成 500 服务器错误,并且执行停止并且加载微调器仍然存在。我很难弄清楚这一点。我已经用几种不同的方式重组了承诺,但没有运气。
** 更新**
我更新了服务以在承诺中使用拒绝,但这仍然不起作用。
组件代码
save() {
this.loading = true; this.itemService.updateItems(this.updatedItems, this.activeCompanyId).then(() => {
this.loading = false;
}).catch((err) => {
console.log("Error updating items", err);
});
}
服务代码
updateItems(items:Item[], companyId) {
let headers = new HttpHeaders()
.set("Content-Type", "application/json")
.set("CompanyId", companyId);
return new Promise((resolve, reject) => {
this.http.post(`${this._config.API_URL}`, items, { headers }).subscribe(
data => {
resolve(data);
},
err => {
console.log('Error updating items', err);
reject(err);
}
);
});
}
【问题讨论】:
-
只是一个问题,你使用 Promises 而不是使用 Angular 原生使用的 Observable 是有原因的?
-
没有什么特别的原因,除了使用我已经知道的。我很乐意重新考虑使用 Observable 而不是不确定如何正确执行。最初,当我选择使用 Promises 时,我选择了当时我认为更安全的选择,让请求按照我的预期运行。