【发布时间】:2020-09-25 06:18:48
【问题描述】:
我正在处理一些 angular 9 的对话框,我遇到了需要在第一次发射后取消订阅主题的情况。
最初,我想使用take(1) 或first() 运算符来传递主题并订阅这个“转换的有限主题”。所以取消订阅将在第一次发射后自动处理,因为当一个可观察对象完成时,取消订阅逻辑被调用。示例:
const subject = new Subject();
subject.pipe(take(1)).subscribe(console.log);
subject.next("hola");
但后来我也发现了这个我认为它也有效的“黑客”,有人可以确认吗?
const subject = new Subject();
const subscription = subject.subscribe((value) => {
console.log(value);
subscription.unsubscribe(); // <----- this is the magic line
}
subject.next("hola");
我以前从未见过这个,我认为在某些场合它很方便。让我感到困惑的是观察者正在调用同一行中定义的订阅。这是好习惯吗?还有其他方法可以实现吗?
谢谢!
【问题讨论】:
标签: angular typescript observable rxjs-observables