Нужно ли освобождать обработчик событий, который я связываю с помощью оператора fromEvent? - PullRequest
0 голосов
/ 19 ноября 2018
fromEvent(document, 'visibilitychange').subscribe(() => doSomething());

Я бы хотел привязать событие к документу с помощью оператора fromEvent, и мне интересно, нужно ли мне удалить / отсоединить обработчик с помощью takeUntil или отписать его на этапе уничтожения.Я узнал, что обработчики событий освобождаются, когда элемент, с которым они связаны, удаляется из DOM, но в этом случае, так как я связываю обработчик с document, я чувствую, что должен выпустить его самостоятельно, но я 'Я не уверен.Любое понимание будет оценено!

1 Ответ

0 голосов
/ 19 ноября 2018

Насколько я знаю, когда узел 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);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...