Angular 的 HttpClient.get() 的承诺何时会被拒绝?

When will the promise from Angular's HttpClient.get() be rejected?

在我们的 Angular 代码库中,我们通常这样处理 http 请求:

return this.http
  .get<Whatever>(url)
  .toPromise()
  .then(response => {
     // handle successful response
  })
  .catch(e => {
     // handle errors
  });

请注意,在 .then() 中,我们不提供回调来处理被拒绝的承诺。

在某些情况下这个承诺实际上可能会被拒绝,我们是否应该安全地处理这些情况?我确定我在这里缺乏对 promises/angular/whatever 的一些基本理解,也许我们应该改用可观察对象而不是总是做 .toPromise()

如果 http 中有 40x 和 50x 响应,承诺将被拒绝。 如果在 http 中有 20x 和 30x 响应,承诺将被解决。

then()之后的catch回调是rejection回调。因此,如果 http 请求失败或出错,catch 块中的代码将为 运行.

你是对的,http方法最好使用observables。