删除用javascript创建的html节点

时间:2019-01-28 15:05:51

标签: javascript typescript dom

我想通过创建将保留src直到存储实际图像的伪造图像来预加载CSS背景图像。

如何删除之前创建的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 :(得分:1)

退订后,您可以将preloaderImg设置为null。它将为将来的垃圾收集设置。

您所读的是,只要有对对象的任何引用,它就会保存在内存中。这是关闭的本质以及它们如何工作。一旦删除了对该对象的所有引用,该对象将(最终)被垃圾回收。由于这是您引用该变量的唯一位置,因此可以确保在将其设置为null之后(每次迭代)将垃圾回收。