基本上,标题所说的是,有没有理由使用observable over a promise进行http调用?看起来像不必要的过度复杂,因为所有的调用都会成功或失败,并且几乎没有真正的理由取消它。要求这是典型的用例,而不是典型的可观察性销售 - 去抖动(具有讽刺意味的是,无论如何,ng-debounce确实很好,而不会进行无用的调用)。
答案 0 :(得分:8)
可观察量的巨大优势在这里非常重要。
Observable
支持取消,而Promise
则不支持。
使用subscribe()
和map()
代替then()
似乎并没有给我带来太多复杂因素。
如果您需要,也可以使用toPromise()
获取Promise
。
有关详细信息,另请参阅Angular - Promise vs Observable。
此外,如果使用FRP风格的编程,在任何地方都能获得可观察的方便。如果不需要,只需使用toPromise()
即可获得Promise
和更简单的API。
答案 1 :(得分:3)
promise和observable之间的最基本区别是如果没有功能订阅它,Observable模块将无法工作。因此减轻了服务器的负担。
在承诺中,无论您是否真正使用了响应,它都会在您的请求和有效负载ping服务器之后向您发送一个promise对象;有时不受欢迎。
基础是减少节点或其他服务器的负载。