Пользовательский элемент все еще работает после удаления - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть собственный элемент внутри тега.В какой-то момент я заменяю целое другим контентом / dom, но на основе консоли разработчика пользовательский элемент из предыдущего тела все еще работает (т.е. извлекает некоторые данные).Разве это не должно быть сборкой мусора (т.е. выполнение JS остановлено) при удалении / замене DOM?Нужно ли обрабатывать удаление вручную (т. Е. Останавливать запросы на выборку в полете и т. Д.) С помощью disconnectedCallback?

Примеры кода (уменьшено)

<body>
<x-search data-cursor="xyz"></x-search>
</body>

JS // В реальном коде этоеще один пользовательский элемент, заменяющий тело

function replacePage(newBody){
    // received an event (i.e. click on a navigation link) 
    // that requires body change
    //
    document.body = newBody.body
    // At this point I was expecting SearchElem to be garbage collected
    // (existing fetch requests aborted etc)
   // but I can see in the console that it's still running 
   // (i.e. fetching some items which perhaps started based
   // on an event received before the dom was removed).
}
class SearchElem extends HTMLElement {
    constructor() {
        super(); 
        this.SearchPull = {
            "top": 200,
            "down": 200,
        };
        // Listen for various events such 'focus'
        // on each event scan the DOM(#search-results) and fetch 
        // new results or remove from existing top/tail if necessary.
        this.ListenEvents()
        let wrapper = this.querySelector("#search-results");
        this.searchPolicy = new SearchPolicy(this.SearchPull, wrapper, cursorHistory);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...