在使用Observable时,一定要注意订阅(subscribe)这个Observable,否则它将不会被触发或执行任何操作。
示例代码:
import { Component, OnInit } from '@angular/core'; import { Observable } from 'rxjs/Observable';
@Component({ selector: 'app-my-component', template: '
{{ myObservable | async }}
' }) export class MyComponent implements OnInit { myObservable: ObservablengOnInit() { // 创建一个Observable,每秒输出一个数字 this.myObservable = Observable.interval(1000) .map(() => 'Hello World!'); } }
在上面的代码中,我们定义了一个Observable并赋值给myObservable属性。然后,我们在组件的模板中使用了async管道来订阅这个Observable,这个管道会帮助我们自动完成subscribe和unsubscribe的过程。
如果我们没有使用async管道,那么我们就需要手动订阅这个Observable,可以使用subscribe方法来实现:
import { Component, OnInit } from '@angular/core'; import { Observable } from 'rxjs/Observable';
@Component({ selector: 'app-my-component', template: '
{{ data }}
' }) export class MyComponent implements OnInit { data: string;ngOnInit() { // 创建一个Observable,每秒输出一个数字 const myObservable = Observable.interval(1000) .map(() => 'Hello World!');
// 订阅Observable
const subscription = myObservable.subscribe(
(value) => {
this.data = value;
},
(error) => {
console.log(error);
},
() => {
console.log('Observable completed');
}
);
// 当组件销毁时取消订阅
subscription.unsubscribe();
} }
在上面的代码中,我们手动订阅了这个Observable,并在subscribe方法中传入了三个回调函数,分别用于处理Observable的next、error和complete事件。最后我们在组件销毁时手动取消了订阅,以避免内存泄漏。