需求描述:

加载图片过程中,可能遇见网络不好第一次加载不出来,那么此时,需要重复加载三次,若还是失败就使用默认的占位图

解决思路

监听图片的error事件, 当图片上的error事件被触发,就进入我们自定义的重新加载方法, 其实方法中, 就是需要一个定时器,在规定的时间内, 去给img的src重新赋值, 每一次赋值就相当于刷新图片一次, 当重试的次数,达到我们规定的次数,就将img的src设置为我们默认的占位图, 然后, 这里需要取消定时器.

基本实现

1. 监听图片的error事件

2. 开启一个定时器,假设规定时间内执行一次,即重试

3. 得有一个计数器, 来判断重试的次数

4. 当重试次数大于我们设定的值,关闭定时器,图片地址改为占位图片地址

 const img = document.querySelector('img')// 1. 监听图片的error事件img.onerror = (e) => {handleError(img, img.getAttribute('retry'))}function handleError(El, retry) {retry = parseInt(retry)// 开启一个定时器,这里每1500ms执行一次let timer = setTimeout(() => {// 如果重试次数大于3if (retry > 3) {console.log('连接失败')// 图片使用占位图片urlEl.src = 'https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png'// 存在的图片地址// 清除定时器clearTimeout(timer)} else {// 重试次数在规定内console.log('重试次数', retry)// 计数器+1retry += 1El.setAttribute('retry',retry)El.src = 'https://www.baidu.com/img.png' //不存在的图片地址}}, 1500)}

总结

该问题为面试中被问到的, 面试结束在此做个记录.
前端菜鸟, 感谢您的观看, 如果感觉还可以希望给个点赞

【web】图片加载失败,重试三次, 若失败则使用占位图片相关推荐

  1. Android Glide图片加载框架(三)缓存机制

    文章目录 一.缓存简介 二.缓存用法 内存缓存方式 磁盘缓存方式 三.缓存KEY 四.内存缓存 内存缓存流程 五.磁盘缓存 磁盘缓存流程 Android Glide图片加载框架系列文章 Android ...

  2. 推荐JS插件:imagesLoaded,监测图片加载情况并提供相应的事件(加载成功/失败)...

    惯例,首先贴上imagesLoaded的官方网址:http://imagesloaded.desandro.com/ 第一次知道imagesLoaded这个插件是在做瀑布流布局时,当时选用的是maso ...

  3. Android图片加载神器之Fresco,基于各种使用场景的讲解

    Fresco是Facebook开源Android平台上一个强大的图片加载库,也是迄今为止Android平台上最强大的图片加载库. 优点:相对于其他开源的第三方图片加载库,Fresco拥有更好的内存管理 ...

  4. Android图片加载神器之Fresco, 基于各种使用场景的讲解

    Fresco是Facebook开源Android平台上一个强大的图片加载库,也是迄今为止Android平台上最强大的图片加载库. 优点:相对于其他开源的第三方图片加载库,Fresco拥有更好的内存管理 ...

  5. Android 图片加载开源框架Fresco,基于各种使用场景的讲解

    Fresco是Facebook开源Android平台上一个强大的图片加载库,也是迄今为止Android平台上最强大的图片加载库. 优点:相对于其他开源的第三方图片加载库,Fresco拥有更好的内存管理 ...

  6. Fresco最强图片加载框架详解及使用

    版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请标明出处:http://blog.csdn.net/android_ls/article/details/53137867 Fresco是F ...

  7. 图片加载神器之Fresco,基于各种使用场景的讲解

    转载请标明出处:http://blog.csdn.net/android_ls/article/details/53137867 Fresco是Facebook开源Android平台上一个强大的图片加 ...

  8. Compose-jb图片加载库load-the-image,适用于KMM Compose desktop桌面端(Windows,Linux,MacOs)

    前言 Android平台上有很多优秀的图片加载框架,比如Glide,Picasso,Fresco 而Compose-jetpack上的图片加载框架有Coil 但Compose-jb上却暂时没有图片加载 ...

  9. Android Glide图片加载框架(二)源码解析之into()

    文章目录 一.前言 二.源码解析 1.into(ImageView) 2.GlideContext.buildImageViewTarget() 3.RequestBuilder.into(Targe ...

最新文章

  1. DPDK — 架构解析
  2. linux下查看当前用户的 三个命令
  3. nginx虚拟主机概念和类型介绍
  4. 让企业零成本拥有自己独立的企业网站不再是问题...
  5. python计算a的平方加b的平方_NumPy计算范数2的平方
  6. TextView 单行显示长文本
  7. Elasticsearch启动报错:Exception in thread “main“ java.nio.file.AccessDeniedException:
  8. visual foxpro 程序员指南_好程序员云计算培训分享云计算中SOA是什么?
  9. Stackops快速部署手册
  10. vue ---- ref
  11. hiho 第1周 最长回文子串
  12. [Java] 蓝桥杯ALGO-122 算法训练 未名湖边的烦恼
  13. java类加载器ClassLoader浅析
  14. 批处理获取管理员权限
  15. 思科模拟器cisco模拟器
  16. python的spider如何让鼠标不_python wooyun爬虫模拟鼠标等
  17. Python编写时钟表turtle
  18. 无法定位序数XX于动态链接库XX.dll的解决的方法
  19. angular使用echarts词云图wordCloud
  20. 项目管理知识体系指南(六)项目成本管理

热门文章

  1. 网络原理基础知识点总结
  2. Nginx使用SSL加密并隐藏真实地址详细教程
  3. 【Codewars】7×7 摩天大楼
  4. Caffe 与 Caffe2
  5. java 开源 server_simplewebserver: SimpleWebServer 是一款使用Java基于NIO编写的超轻量级开源Web Application Server...
  6. JavaScript笔记之二--- 崔西凡day03
  7. 上位机开发(详细设计)
  8. python 金角大王_python基础-2,转自金角大王
  9. 解决R语言xlsx安装遇到加载rjava报错的问题
  10. 腾讯通服务器文件数据源,Rtx/关于SQL数据库配置