У меня есть собственный элемент внутри тега.В какой-то момент я заменяю целое другим контентом / 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);
}
}