Javascript 如何使remove类异步运行?

Javascript 如何使remove类异步运行?,javascript,jquery,image,angular,asynchronous,Javascript,Jquery,Image,Angular,Asynchronous,我正在为angular应用程序中的图像使用自定义指令,在该指令中,我希望添加占位符图像,直到加载图像,并且占位符图像必须应用“无图像”类。这就是我所做的: loadImage(image: string) { let defaultImage = this._getLocalResource(this._NO_IMAGE); this.currentElement.className = 'no-image'; this.currentElement.src = defa

我正在为angular应用程序中的图像使用自定义指令,在该指令中,我希望添加占位符图像,直到加载图像,并且占位符图像必须应用“无图像”类。这就是我所做的:

loadImage(image: string) {
    let defaultImage = this._getLocalResource(this._NO_IMAGE);
    this.currentElement.className = 'no-image';
    this.currentElement.src = defaultImage;
    const img = new Image();
    if (image) {
        img.src = image;
    } else {
        img.src = defaultImage;
    }
    img.onload = () => {
        this.currentElement.classList.remove('no-image');
        this.currentElement.src = img.src;
    };
    img.onerror = err => {
        this.currentElement.class = 'no-image';
        this.currentElement.src = defaultImage;
    };
}
我的问题是,当图像加载(在onload函数中)时,删除类“no image”需要一些时间,并且加载的图像使用类“no image”渲染几秒钟。这会造成不愉快的用户体验

在成功删除类后,是否有任何方法可以将加载的映像分配给currentElement.src,或者是否有任何异步方法删除该类?

您可以尝试延迟 this.currentElement.src=img.src; 行方式

您可以尝试延迟 this.currentElement.src=img.src;
line by

为什么不在“load”处理程序运行之前为图像提供可见性:hidden?从类列表中实际删除该类几乎不需要任何时间。对我来说,问题可能是,在确定是否存在真正需要的图像之前,您需要为目标图像指定一个“src”。如果一开始是隐藏的,则在确定可用性之前不会显示任何内容。@Pointy我需要图像可见并显示占位符图像,而不是从类列表中实际删除该类需要时间,并且在某些情况下是可见的。需要时间的是获取该图像的HTTP请求。一旦实际调用了“onload”函数,修改类列表将不需要任何时间。为什么不在“load”处理程序运行之前,只给图像
可见性:hidden
?从类列表中实际删除类几乎不需要任何时间。对我来说,问题可能是,在确定是否存在真正需要的图像之前,您需要为目标图像指定一个“src”。如果一开始是隐藏的,则在确定可用性之前不会显示任何内容。@Pointy我需要图像可见并显示占位符图像,而不是从类列表中实际删除该类需要时间,并且在某些情况下是可见的。需要时间的是获取该图像的HTTP请求。一旦实际调用了“onload”函数,修改类列表将不需要任何时间。这不是真正的异步,当加载花费太多时间时可能会失败。这不是真正的异步,当加载花费太多时间时可能会失败