在Angular中使用RxJS时,订阅一个Observables时会返回一个Subscription对象,该对象持有对Observable的引用,当不再需要订阅时,必须手动取消订阅以避免内存泄漏和资源浪费。
代码示例:
订阅示例:
import { Component, OnInit } from '@angular/core'; import { Observable } from 'rxjs';
@Component({ selector: 'app-example', templateUrl: './example.component.html', styleUrls: ['./example.component.scss'] }) export class ExampleComponent implements OnInit {
myObservable$: Observable
constructor() { this.myObservable$ = new Observable(observer => { observer.next('Hello World!'); observer.complete(); }); }
ngOnInit() { this.mySubscription = this.myObservable$.subscribe(value => { console.log(value); }); } }
取消订阅示例:
import { Component, OnInit, OnDestroy } from '@angular/core'; import { Observable, Subscription } from 'rxjs';
@Component({ selector: 'app-example', templateUrl: './example.component.html', styleUrls: ['./example.component.scss'] }) export class ExampleComponent implements OnInit, OnDestroy {
myObservable$: Observable
constructor() { this.myObservable$ = new Observable(observer => { observer.next('Hello World!'); observer.complete(); }); }
ngOnInit() { this.mySubscription = this.myObservable$.subscribe(value => { console.log(value); }); }
ngOnDestroy() { this.mySubscription.unsubscribe(); }
}