Rxjs 我是否需要释放通过fromEvent操作符绑定的事件处理程序?

Rxjs 我是否需要释放通过fromEvent操作符绑定的事件处理程序?,rxjs,Rxjs,我想使用fromEvent操作符将事件绑定到文档,我想知道是否需要使用takeUntil或在销毁阶段取消订阅来删除/取消绑定处理程序。我逐渐了解到,当事件处理程序绑定的元素从DOM中移除时,事件处理程序就会被释放,但在这种情况下,由于我在文档上绑定了事件处理程序,所以我觉得必须自己释放它,但我不确定。如有任何见解,将不胜感激 据我所知,当Dom节点从文档树中删除时,关联的事件将被删除,但是由于事件是使用rxjsfromEvent绑定的,因此您仍需要取消订阅以防止内存泄漏 关于文档节点,通过查看f

我想使用
fromEvent
操作符将事件绑定到文档,我想知道是否需要使用
takeUntil
或在销毁阶段取消订阅来删除/取消绑定处理程序。我逐渐了解到,当事件处理程序绑定的元素从DOM中移除时,事件处理程序就会被释放,但在这种情况下,由于我在
文档
上绑定了事件处理程序,所以我觉得必须自己释放它,但我不确定。如有任何见解,将不胜感激

据我所知,当Dom节点从文档树中删除时,关联的事件将被删除,但是由于事件是使用rxjs
fromEvent
绑定的,因此您仍需要取消订阅以防止内存泄漏

关于文档节点,通过查看
fromEvent
的源代码,它将在您取消订阅时为您调用removeEventListener。同样,当您不再需要时,您需要调用unsubscribe

fromEvent(document, 'visibilitychange').subscribe(() => doSomething());
function setupSubscription(sourceObj, eventName, handler, subscriber, options) {
    let unsubscribe;
    if (isEventTarget(sourceObj)) {
        const source = sourceObj;
        sourceObj.addEventListener(eventName, handler, options);
        unsubscribe = () => source.removeEventListener(eventName, handler, options);
    }