在 RxJs 中取消订阅取消订阅未来的订阅。为什么以及如何修复它?
我的意思是:
import { interval, Subscription } from "rxjs";
const subs = new Subscription();
subs.unsubscribe();
const sub = interval(1000).subscribe(r => console.log(r));
subs.add(sub);
我希望这段代码可以无限输出整数。但它什么都不输出。为什么?
答案 0 :(得分:4)
当您在 Subscription
上调用 unsubscribe 时,它会将其状态更改为已关闭
如果在订阅关闭时有任何未来添加的订阅,它将立即取消订阅所有未来的订阅
这是旧的 Subscription
类 .add
方法中的源代码部分
case 'object':
if (subscription.closed || typeof subscription.unsubscribe !== 'function') {
return subscription;
}
else if (this.closed) {
subscription.unsubscribe();
return subscription;
}
else if ....