Удалить HTML-узел, созданный с помощью JavaScript - PullRequest
0 голосов
/ 28 января 2019

Я хочу предварительно загрузить фоновые изображения css, создав поддельные, которые будут хранить src, пока фактическое изображение не будет кэшировано.

Как удалить preloaderImg элементы, которые были созданы ранее?Нужно ли удалять их, чтобы предотвратить утечки памяти, или браузер с этим справится?

let preloaderImg = document.createElement("img");
preloaderImg.src = this.finalSrc;
let subscription = fromEvent(preloaderImg, 'load').subscribe((event: Event) => {
    this.removeClass("loading");
    this.addClass("loaded");
    this.setBackgroundImage(this.finalSrc);
    subscription.unsubscribe();
});

1 Ответ

0 голосов
/ 28 января 2019

Вы можете установить preloaderImg на null после отписки.Это настроит его на сборку мусора в будущем.

Что вы прочитали, так это то, что до тех пор, пока есть какая-либо ссылка на объект, он будет храниться в памяти.Это природа замыканий и то, как они работают.Как только все ссылки на объект будут удалены, объект будет удален (в конце концов).Поскольку это единственное место, где вы ссылаетесь на эту переменную, вы уверены, что она будет собираться мусором после того, как вы установили ее в null (на каждой итерации).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...