我想通过创建将保留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();
});
答案 0 :(得分:1)
退订后,您可以将preloaderImg
设置为null
。它将为将来的垃圾收集设置。
您所读的是,只要有对对象的任何引用,它就会保存在内存中。这是关闭的本质以及它们如何工作。一旦删除了对该对象的所有引用,该对象将(最终)被垃圾回收。由于这是您引用该变量的唯一位置,因此可以确保在将其设置为null之后(每次迭代)将垃圾回收。