fromEvent(document, 'visibilitychange').subscribe(() => doSomething());
我想使用fromEvent
运算符将事件绑定到文档,我想知道是否需要使用takeUntil
删除/取消绑定处理程序或在销毁阶段取消订阅该处理程序。我开始了解到从DOM中删除了与事件处理程序绑定的元素时会释放事件处理程序,但是在这种情况下,由于我在document
上绑定了事件处理程序,因此我想必须自己释放它,但是我不确定。任何见识将不胜感激!
答案 0 :(得分:1)
据我所知,当从文档树中删除Dom节点时,相关事件将被删除,但是由于该事件是通过使用rxjs fromEvent
绑定的,因此您仍然需要取消订阅以防止内存泄漏。
关于文档节点,通过查看fromEvent
的源代码,它将在您取消订阅后为您调用removeEventListener。同样,当您不再需要取消订阅时,您将需要调用它。
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);
}