Angular Http - toPromise 或订阅

Angular Http - toPromise or subscribe

我看了一些关于 Angular 的课程,发现有不同的方法来管理来自 Http 请求的数据。

我在我的应用程序中使用了 toPromise(),因为我发现它类似于 AngularJS Http 服务。

在什么情况下需要使用 Observables?

如果您喜欢反应式编程风格并希望在您的应用程序中保持一致,即使对于单个事件(而不是事件流)也始终使用可观察对象,那么请使用可观察对象。如果这对您来说无关紧要,请使用 toPromise().

Observable 的一个优点是,您可以取消请求。

另见

我认为只要响应不是您要使用的数据流,那么您最好使用 .toPromise() 方法,因为继续收听您的响应是没有意义的不需要,甚至不会改变。

更新

.toPromise() 现在在 RxJS 7 中被弃用,他们用更好的东西取而代之 firstValueFromlastValueFrom.

因此您的代码应如下所示:
await lastValueFrom(httpRequest$)

有关此的更多信息,请查看这些链接:
https://rxjs.dev/deprecations/to-promise
https://www.youtube.com/watch?v=3aeK5SfWBSU

angular 中的默认 http 请求发出 observables。可以通过调用 toPromise() 将其转换为 Promise。但这不是必需的。 Angular 通过调用

解决后取消订阅 http 请求
   `_xhr.removeEventListener('load', onLoad);
    _xhr.removeEventListener('error', onError);
    _xhr.abort();`

Observables are cancellable, but promises are not.

即使组件被销毁导致内存泄漏,打开请求仍然存在,这可以通过取消订阅可观察对象或在组件被销毁后调用销毁方法来防止。 Ways to unsubscribe to prevent memory leaks

结论,最好使用具有内存泄漏预防技术的可观察对象。