如何使用Javascript判断单、多张图片加载完成?

单张图片(图片动态生成)

//js
 var logo = new Image();
 logo.src = 'https://mstcdn.oss-cn-shenzhen.aliyuncs.com/images/logo/javascript-logo.png';
 logo.onload = function(){
    // 加载完成 
 };

单张图片(结合ES6 Promise)

//js
 new Promise((resolve, reject)=>{
    let logo = new Image();
    logo.src = 'https://mstcdn.oss-cn-shenzhen.aliyuncs.com/images/logo/javascript-logo.png';
    logo.onload = function(){
       // 加载完成 
       resolve(logo)
    };
 }).then((logo)=>{
     //code
 })

多张图片

var img = [],  
      flag = 0, 
      mulitImg = [
        'https://mstcdn.oss-cn-shenzhen.aliyuncs.com/images/logo/javascript-logo.png',
        'https://mstcdn.oss-cn-shenzhen.aliyuncs.com/images/logo/es6-logo.jpeg',
        'https://mstcdn.oss-cn-shenzhen.aliyuncs.com/images/logo/git-logo.jpeg'
     ];
 var imgTotal = mulitImg.length;
 for(var i = 0 ; i < imgTotal ; i++){
    img[i] = new Image()
    img[i].src = mulitImg[i]
    img[i].onload = function(){
       //第i张图片加载完成
       flag++
       if( flag == imgTotal ){
          //全部加载完成
       }
    }
 }

多张图片(结合ES6 Promise.all())

 let mulitImg = [
        'https://mstcdn.oss-cn-shenzhen.aliyuncs.com/images/logo/javascript-logo.png',
        'https://mstcdn.oss-cn-shenzhen.aliyuncs.com/images/logo/es6-logo.jpeg',
        'https://mstcdn.oss-cn-shenzhen.aliyuncs.com/images/logo/git-logo.jpeg'
 ];

 let promiseAll = [], img = [], imgTotal = mulitImg.length;
 for(let i = 0 ; i < imgTotal ; i++){
     promiseAll[i] = new Promise((resolve, reject)=>{
         img[i] = new Image()
         img[i].src = mulitImg[i]
         img[i].onload = function(){
              //第i张加载完成
              resolve(img[i])
         }
     })
 }
 Promise.all(promiseAll).then((img)=>{
     //全部加载完成
 })

转载:http://www.mianshiting.com/#/article/197

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值