 额,GIF有点糊,将就看看吧。 图片我是使用以下方式提前加载的。 const img = new Image(); img.src = src; 浏览器这里使用的也是缓存,为什么还是会闪烁? * * * ...视频好像没有录到闪烁,但总之是有图片会闪烁的,有知道原因的朋友吗? * * * 大概到处试了试,没有闪烁了; 感觉用实体dom效果会好很多,不知道对不对。 const images = { img1: import('@/assets/images/public/calendar.svg'), ... }; type imagesKeys = keyof typeof images; let load = Object.keys(images).length; const imagesDom = document.createElement('div'); document.body.appendChild(imagesDom); function removeImagesDom() { if (--load == 0) document.body.removeChild(imagesDom); } // 创建一个任务,当浏览器空闲时执行 function newImage(src: string) { return function (deadline: IdleDeadline) { if (deadline.timeRemaining() > 0) { const img = document.createElement('img'); img.src = src; img.onload = removeImagesDom; imagesDom.appendChild(img); } else { requestIdleCallback(newImage(src)); } }; } for (const key in images) { if (Object.prototype.hasOwnProperty.call(images, key)) { images[key as imagesKeys].then((value: any) => { requestIdleCallback(newImage(value.default)); }); } }