我在Angular上观看了一些课程,并发现有不同的方法来管理来自Http请求的数据。
.map()
,.subscribe()
.toPromise()
,.then()
,.catch()
我在我的应用程序中使用toPromise()
,因为我发现它类似于AngularJS Http服务。
在什么情况下我需要使用Observables?
答案 0 :(得分:17)
如果您喜欢反应式编程风格并希望在应用程序中保持一致,即使对于单个事件(而不是事件流)也始终使用可观察对象,然后使用可观察对象。如果这对您不重要,请使用toPromise()
。
可观察的一个优点是,您可以取消请求。
答案 1 :(得分:1)
我认为,只要响应不是您要使用的数据流,那么最好使用.toPromise()
方法,因为继续收听您不响应的响应是没有意义的不需要,甚至都不会改变。
答案 2 :(得分:0)
默认的http请求以角度发出可观察到的。可以通过调用toPromise()将其转换为Promise。但这不是必需的。通过调用
解决后,Angular取消订阅http请求addUsers(y): Observable<any> {
return this.http.get<any>("https://jsonplaceholder.typicode.com/todos/"+y);
}
可观察的事物是可以取消的,但是诺言却不能。
即使在销毁组件导致内存泄漏之后,打开请求仍会保留,这可以通过取消订阅可观察对象或在销毁组件后调用destroy方法来防止。 Ways to unsubscribe to prevent memory leaks
结论,最好将可观察变量与内存泄漏预防技术结合使用。