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