使用RxJS的 BehaviorSubject 和 pipe
BehaviorSubject 是 RxJS 中的一种可观察对象,它可以发出其最后一个值(或初始值)并保存该值以供订阅者使用。在这种情况下,我们使用 BehaviorSubject 来表示更改状态,并在每次更改时通知所有订阅者。
代码示例:
import { BehaviorSubject } from 'rxjs';
import { tap } from 'rxjs/operators';
// 创建初始值为 false 的 BehaviorSubject
const changeState$ = new BehaviorSubject(false);
// 订阅状态更改
changeState$
.pipe(
// 将状态打印到控制台
tap((state) => console.log(`状态已更改为 ${state}`))
)
.subscribe();
// 更改状态为 true
changeState$.next(true);
这将输出以下内容:
状态已更改为 true
在上面的示例中,我们使用 BehaviorSubject 创建一个名为 changeState$ 的可观察对象,并将其初始值设置为 false。然后,我们使用 pipe() 方法并在其中调用 tap() 操作符来订阅状态更改并将其打印到控制台。
最后,我们使用 next() 方法将更改状态的新值传递给我们的可观察对象。所有订阅者都将收到状态更改的通知,并且订阅者将执行其下管道中的操作符。