使用Http方法创建的可观察对象是否需要进行退订?

359

你是否需要取消订阅 Angular 2 的 HTTP 请求以防止内存泄漏?

 fetchFilm(index) {
        var sub = this._http.get(`http://example.com`)
            .map(result => result.json())
            .map(json => {
                dispatch(this.receiveFilm(json));
            })
            .subscribe(e=>sub.unsubscribe());
            ...

1
可能是如何在Angular 2中防止内存泄漏?的重复问题。 - Eric Martinez
1
请参考https://dev59.com/ZlsW5IYBdhLWcg3w66qH(以及评论)来防止Angular 2中的内存泄漏。 - Eric Martinez
2
如果您正在阅读这个问题,请注意接受的答案(由提问者自己编写)可能存在问题。如果您阅读其他答案,它们都反驳了您不必取消订阅的观点。仅仅因为一个答案得到了最多的赞同并被接受,这并不意味着它是正确的。 - Liam
11个回答

-2

RxJS可观察对象基本上是关联的,并且在订阅时按照相应的方式工作。当我们创建可观察对象并完成其运动时,可观察对象会自动关闭和取消订阅。

它们的工作方式与观察者类似,但顺序有所不同。最好的做法是在组件被销毁时取消订阅它们。我们可以通过例如:this.$manageSubscription.unsubscibe()来实现。

如果我们像下面提到的语法一样创建了可观察对象:

** return new Observable((observer) => { ** // 它使可观察对象处于冷状态 ** observer.complete() **}) **


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接