记录--聊聊图片预加载

这篇具有很好参考价值的文章主要介绍了记录--聊聊图片预加载。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助

记录--聊聊图片预加载

聊聊图片预加载

关于图片的加载,不同的需求有不同的实现,比如图片过多时候的懒加载,为了保证效果的预加载。

如何进行图片的预加载

前端实现图片的预加载,其实是利用了浏览器的缓存,我们通过 a 标签来提前加载图片,如下:

  const img = new Image() 
  img.src = '链接' 
  img.onload = function(){ 
      console.log('加载完成')
  }

预加载的策略

在实际的业务中,需求不同,加载的策略不尽相同。

场景一:贪婪加载

刚进入页面有 loading,需要将后面的图片全部加载完成。如进入 h5 游戏的时候,需要把后面用到的人物背景图片都加载出来。

这个时候我们不考虑带宽的问题,一次性加载所有的图片。

将每次加载图片封装成一次 promise:

new Promise((reslove,reject)=>{ 
    const img = new Image() 
    img.src = '链接' 
    img.onload = onerror = resolve 
 })

再使用 promise.all 进行全加载

Promise.all([...])

场景二:部分加载

正常展示当前页面,但是下个页面的图片可以先偷偷加载进来,同时不要影响当前页面正常图片的加载。

这时候我们需要考虑带宽,不能一次性使用加载图片拉满,这样会导致页面加载的图片加载不出来。可以使用批量加载,比如每次加载 5 张,加载完 5 张之后再加载下 5 张。这样如果当前页面如果有图片也可以正常展示加载。

具体实现类似分页一样,获取要加载图片里面的 5 张,进行加载,直到加载结束。

// 总任务 
function loadImages(list){ 
    const pageSize = 5 
    const pageNum = 0 
    return new Promise((reslove,reject)=>{ 
        function run(){ 
            Promise.all(genetateTasks(list,pageSize,paegNum)).then(()=>{ 
                pageNum++ 
                const hasLength = pageSize * pageNum 
                if(totalNum > hasLength){ 
                    run() 
                }else { 
                    reslove(true) 
                } }) 
           } 
           run() 
 }) }

子任务处理:

// 子任务 
function genetateTasks(list,pageSize,pageNum){
    const promiseArr = [] 
    const start = pageNum * pageSize 
    const end = (pageNum + 1) * pageSize - 1 
    for(let i = start;i<end;i++){ 
        const p = new Promise((reslove,reject)=>{ 
            const img = new Image() 
            img.src = list[i] 
            img.onload = img.onerror = reslove 
         }) 
         promiseArr.push(p) 
    } 
    return promiseArr 
}

注意点

  • 在移动端,如果使用贪婪加载,可能会导致你的 loading 图片都没有加载出来(因为都去加载预加载的图片去了),需要将加载图片的逻辑放在 window.load 事件之后
  • 在部分加载的时候,如果需要保证当前页面的效果,可以在当前页面图片加载之后再开始加载(可以使用 imagesloaded)

本文转载于:

https://juejin.cn/post/7312723056300015628

如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。

 记录--聊聊图片预加载文章来源地址https://www.toymoban.com/news/detail-760383.html

到了这里,关于记录--聊聊图片预加载的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 分享一个403界面给大家

    先看效果图(说明:小鬼影会飘来飘去,长时间停留会有小惊喜,具体大家跑一下就知道): 代码如下: PS:发现我用文字写太生硬了,干的噎嗓子,干脆在代码里加注释了。

    2024年02月06日
    浏览(46)
  • stable-diffusion-webui 加载失败 卡在这里求助

    C:UsersClackDesktopNeonMindAI_894978NeonMind AIstable-diffusion-webuicall webui.bat venv \\\"C:UsersClackDesktopNeonMindAI_894978NeonMind AIstable-diffusion-webuivenvScriptsPython.exe\\\" Python 3.10.6 (tags/v3.10.6:9c7b4bd, Aug  1 2022, 21:53:49) [MSC v.1932 64 bit (AMD64)] Version: v1.3.2 Commit hash: baf6946e06249c5af9851c60171692c44ef633e0 Inst

    2024年02月04日
    浏览(45)
  • uniapp 微信小程序 实现 将base64图片保存相册和转发分享微信好友功能记录 直接cv就能用!!!!

    一、base64图片保存相册功能 提示api:that.$refs.uToast.show用的是uview2.0的toast,可以根据具体引入的ui库去更换; 二、转发分享base64图片给微信好友功能  该功能在微信开发者工具中调试的时候会一直报错,真机是没问题的,可能是编译器的bug。 其实整个wx.showShareImageMenu会拉起保

    2024年02月11日
    浏览(74)
  • 分享三个ai写作生成器给大家

    在当今数字化时代,随着人工智能的快速发展,ai写作软件已经成为越来越多人关注的热门话题。这些创新的软件利用机器学习和自然语言处理等技术,能够生成一些好的文章、博客、新闻稿甚至小说等内容,大大地提升了写作的效率和质量。然而,面对众多的ai写作软件选择

    2024年02月16日
    浏览(58)
  • 怎么用手机压缩图片?教给大家三种手机压缩图片方法

    如何使用手机把图片的内存进行压缩呢?大家在使用照片的时候,如果照片的内存太大,不仅会占用手机的内存,也会影响一些网站上传图片的操作,因为图片内存太大很多都是上传不了的,为了解决这一问题我们可以将图片进行压缩。今天给大家分享三种手机就能压缩图片

    2024年02月08日
    浏览(44)
  • 必做的高收益自媒体平台,分享给大家

    现在市面上的自媒体平台是非常多的,大大小小加起来也有30好几个,但是要说到哪些平台收益比较高,那就不得不提到下面这个几个主流平台,今天就给大家分享一下收益比较高的几个主流平台。 第一个:百家号 百家号平台目前的收益单价在众多自媒体平台来说真的算是非

    2024年02月12日
    浏览(39)
  • 这几个ai写作生成器分享给大家

    大家知道吗,现在市场有许多ai写作软件,它们已经能够模仿人类的写作风格,帮大家轻松地生成文章。我对于非常感兴趣,于是就上网查了一下有可以ai写作的软件吗?结果真的找到几款不错的软件,今天借这个机会我将它们分享给你。 以下是今天分享的ai写作软件 一:A

    2024年02月15日
    浏览(57)
  • 分享几个源码网站奉献给大家(持续更新中……)

    1.51源码: http://www.51aspx.com/ 2.源码之家: http://www.codejia.com/ 3.源码网: http://www.codepub.com/ 4.虾客源码: http://www.xkxz.com/ 5.多多源码: http://www.morecode.net/ 6.洪越源代码: http://www.softhy.net/ 7.锋网源码:http://www.fwvv.net/ 8.代码爱好者:http://www.codefans.com/ 9.爱源码:http://www.aiyuanma

    2024年01月16日
    浏览(55)
  • 微软文字转语音不能试用了,分享三个方法给大家!

    最近很多小伙伴告诉我,微软文字转语音不能在线试用了,这是因为微软关闭了官方的使用页面,所以现在不能直接使用微软的网页版进行文字转语音了。 那么我们还有没有更好的方法去“白嫖”微软的文字转语音呢? 答案是肯定的,今天再给大家分享三个可以白嫖微软文

    2024年02月11日
    浏览(48)
  • 如何从视频中提取音频?分享三个免费的方法给大家!

    在数字时代,视频和音频的使用越来越广泛。有时,您可能希望从视频中提取音频,以便单独使用或与他人分享。无需购买昂贵的软件或具备专业技能,下面将介绍三种免费的方法,帮助您从视频中提取音频。这些方法简单易行,适用于任何人。 方法一:使用剪映 剪映是一

    2024年02月06日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包