Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular2:当服务被破坏时,我们需要取消订阅吗?_Angular_Typescript - Fatal编程技术网

Angular2:当服务被破坏时,我们需要取消订阅吗?

Angular2:当服务被破坏时,我们需要取消订阅吗?,angular,typescript,Angular,Typescript,当服务被破坏时,我们是否需要取消订阅 根据销毁事件,侦听此服务的其他组件可以取消订阅。我只是不明白为什么这么做很重要 这是一种很好的做法,还是出于性能目的的需要?是的,因为这样的东西会导致内存泄漏。这总是一个很好的做法,清理后,你自己,以确保你不会遇到大问题的道路上,因为我在过去,特别是与角1 订阅后的清理相当简单: import {Subscription} from 'rxjs/Subscription'; 在你们班: public configSubscription: Subscrip

当服务被破坏时,我们是否需要取消订阅

根据销毁事件,侦听此服务的其他组件可以取消订阅。我只是不明白为什么这么做很重要


这是一种很好的做法,还是出于性能目的的需要?

是的,因为这样的东西会导致内存泄漏。这总是一个很好的做法,清理后,你自己,以确保你不会遇到大问题的道路上,因为我在过去,特别是与角1

订阅后的清理相当简单:

import {Subscription} from 'rxjs/Subscription';
在你们班:

public configSubscription: Subscription;
在构造函数内部或ngOnInit或其他适当位置:

this.configSubscription = this.api.config$.subscribe(
  config => {
    this.config = config;
});
然后用这个来清理:

ngOnDestroy() {
  this.configSubscription.unsubscribe();
}

是的,你知道,因为像这样的东西会导致内存泄漏。这总是一个很好的做法,清理后,你自己,以确保你不会遇到大问题的道路上,因为我在过去,特别是与角1

订阅后的清理相当简单:

import {Subscription} from 'rxjs/Subscription';
在你们班:

public configSubscription: Subscription;
在构造函数内部或ngOnInit或其他适当位置:

this.configSubscription = this.api.config$.subscribe(
  config => {
    this.config = config;
});
然后用这个来清理:

ngOnDestroy() {
  this.configSubscription.unsubscribe();
}

@如果是那样的话,我想你不必担心。一旦你投下一个承诺,潜在的可观察到的将在承诺解决/拒绝时完成。这是因为根据定义,承诺只发出一个值,所以它们的资源不会像可观察对象那样停留。PS:也许其他人可以在这里权衡,但有一个边缘案例:如果你的承诺永远无法解决b/c问题,可观测的源不会发出,那么该资源仍然存在。在这种情况下,您可能需要解决它,但我仍然不认为memleak的危险,除非您继续扩展promises@Scipion那样的话,我想你不必担心。一旦你投下一个承诺,潜在的可观察到的将在承诺解决/拒绝时完成。这是因为根据定义,承诺只发出一个值,所以它们的资源不会像可观察对象那样停留。PS:也许其他人可以在这里权衡,但有一个边缘案例:如果你的承诺永远无法解决b/c问题,可观测的源不会发出,那么该资源仍然存在。在这种情况下,你可能需要解决这个问题,但我仍然不认为memleak有什么危险,除非你不断地跨越承诺。你不是从这里得到答案吗?你不是从这里得到答案吗