Angular Http - toPromise或subscribe

sha*_*urg 16 angularjs angular2-services angular

我在Angular上观看了一些课程,发现有不同的方法来管理来自Http请求的数据.

  • 使用Observables .map(),.subscribe()
  • 使用承诺,.toPromise(),.then(),.catch()

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

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

Gün*_*uer 19

如果您喜欢反应式编程风格并希望在应用程序中保持一致,即使对于单个事件(而不是事件流)也始终使用observable,然后使用observables.如果这对你没关系,那就用吧toPromise().

可观察的一个优点是,您可以取消该请求.

另见Angular - Promise vs Observable

  • 我只会在教程中添加Observable优点的好例子:https://angular.io/docs/ts/latest/tutorial/toh-pt6.html#!#-_observable-s(延迟搜索) (2认同)
  • 如果您知道特定的数据是固定的而不是流怎么办?当然,这应该作为 Promise 返回?为您知道不会随时间改变的数据设置对 Observable 的订阅,这听起来像是在浪费资源。 (2认同)
  • 快速搜索显示 https://medium.com/@benlesh/rxjs-dont-unsubscribe-6753ed4fda87 您可能会觉得有帮助。当一个 observable 关闭时,你不需要取消订阅。如果你有一个像 http 这样的可观察对象,它会在一个事件后关闭,对于其他人,你可以使用 `first()` 将其转换为一个在一个事件后关闭的对象。 (2认同)

Tar*_*eed 18

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