【发布时间】:2020-12-07 06:53:55
【问题描述】:
从这里:https://stackoverflow.com/a/40135509/462608
首先,这个答案描述了 Observables 如何有助于防止向服务器发送相同的重复请求,以及我们如何在多个请求之间暂停,以免服务器过载。
他们说:
就我在 Angular 中使用 Http 而言,我同意在正常用例中使用 Observable 而不是 Promise 并没有太大区别。在实践中,这些优点都不是真正相关的。希望我将来能看到一些高级用例:)
我在这里的理解是,当使用 Http 时,Observables 的好处并不真正相关。
为什么会这样?在这种情况下 Http 起什么作用?
我必须研究什么主题才能理解 Http 在这里的作用?
【问题讨论】:
-
好吧,如果您将区域限制为 HTTP,您可能是对的。但在现实场景中,最终还是需要谴责、轮询、事件过滤、事件合并、将组件事件与 HTTP 服务结合等。然后你就可以尝到 observables 的甜头了。
-
如果你有一个 Observable,你可以使用 Rxjs 来管理。这允许您将运算符用作去抖动、不同、延迟、成对、节流、超时、共享...:learnrxjs.io/learn-rxjs/operators/complete。对我来说,Promise 和 Observable 之间有很大的区别
-
@Eliseo 请再次阅读问题。我想了解 HTTP 与 Observables 有效性有什么关系。 OP中的这句话
As far as I am using Http in Angular, I agree that in the normal use cases there is not much difference when using Observable over Promise.请解释一下http是什么。 -
假设您调用一个返回“对象”列表的 API。您想对每个对象进行一次调用以获取“具有属性的对象”列表。使用 switchMap 和 forkJoin 订阅并获得列表的响应。因为 Angular 是用 observables 制作的。 FormControl.changeValues 是一个可观察的,您可以再次使用 switchMap 将调用中的输入更改“转换”为 API,从而为您提供结果,您可以在调用之前进行过滤。另一个,你想做一个“加载”。您可以创建一个运算符来显示它。使用 Share,您可以避免多次拨打同一个电话。
-
我知道 Observables 有太多的运算符,但实际上,一开始使用
switchmap、takeWhile和forkjoin在大多数情况下都足以调用 API
标签: angular http rxjs observable angular-promise