使用 take(1) 操作符来限制 Observable 只响应一次。
示例代码:
import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs';
import { take } from 'rxjs/operators';
@Component({
selector: 'app-my-component',
template: `
{{ message$ | async }}
`,
})
export class MyComponent implements OnInit {
message$: Observable;
ngOnInit() {
this.message$ = this.getMessage();
}
getMessage(): Observable {
return new Observable((observer) => {
console.log('Observable 执行');
observer.next('第一次响应');
setTimeout(() => observer.next('第二次响应'), 1000);
}).pipe(
take(1) // 只响应一次
);
}
}