RxJs 取消订阅取消订阅未来的订阅

时间:2021-03-16 12:26:00

标签: rxjs

在 RxJs 中取消订阅取消订阅未来的订阅。为什么以及如何修复它?

我的意思是:

import { interval, Subscription } from "rxjs";

const subs = new Subscription();
subs.unsubscribe();

const sub = interval(1000).subscribe(r => console.log(r));
subs.add(sub);

我希望这段代码可以无限输出整数。但它什么都不输出。为什么?

1 个答案:

答案 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 ....