从Angular 6开始,subscribe()方法的行为有所变化。现在,它会自动取消订阅。这是一种解决内存泄漏的常见问题的方法。
在旧版本中,您必须手动取消订阅以避免内存泄漏。例如:
import { Subscription } from 'rxjs/Subscription'; import { OnDestroy } from '@angular/core';
export class MyComponent implements OnDestroy { private subs: Subscription = new Subscription();
ngOnDestroy() { this.subs.unsubscribe(); }
getData() { this.subs.add(this.myService.getData().subscribe(data => { console.log(data); })); } }
在新版中,您可以省略上述代码并使用不需要手动取消订阅的新版本:
import { Subscription } from 'rxjs'; import { OnDestroy } from '@angular/core';
export class MyComponent implements OnDestroy { private subs: Subscription = new Subscription();
ngOnDestroy() {
// no need to unsubscribe because subs
// will be automatically unsubscribed
}
getData() { this.subs.add(this.myService.getData().subscribe(data => { console.log(data); })); } }
通过使用新版本的subscribe()方法,可以更轻松地避免内存泄漏,并减少代码冗余。