由于内存泄漏而取消订阅可观察对象

Yas*_*ain 0 observable rxjs angular

我有一个后端服务,当我们使用HTTP服务命中其中一个端点时返回一些数据.现在我们正在使用角色Observables.我们subscribe到了终点.像这样的东西

constructor(private http : Http){
}

ngOnInit(){
   this.http.get('/api/posts').subscribe(response => {
      // Store data into class variable
   })
}
Run Code Online (Sandbox Code Playgroud)

当我们订阅它.在next订阅部分.我们已经获得了所有数据,无论它是通过响应得到的.现在没有什么可以从我们收到的数据中分离出来,但是如果我们不取消订阅,仍有许多人说存在内存泄漏.我们通常在ngOnDestroy()生命周期方法中取消订阅.我真正想知道的是,当呼叫已经完成时,我们通过响应从服务器获得数据,并且没有什么可以从中得到更多.那我们为什么需要unsubscribe呢.我想特别了解内存泄漏概念.

ibe*_*oun 6

TL; DR; 不,您不需要取消订阅http电话.

除非observable完成,否则你应该总是考虑取消订阅你的observable,这就是http调用observables的情况.

有许多取消订阅的方法,如果您只需要一个可以添加的结果,obs.pipe(first())它会在收到第一个结果后自动完成.您还可以使用async角度管道,在销毁组件时自动订阅和取消订阅.