js判断多个请求加载完毕

通过js判断多个请求是否加载完毕

判断下面3张图片是否全部加载完毕

var imgStr = [
'https://img10.360buyimg.com/da/jfs/t14395/79/2162545826/196335/87c2c3f2/5a718ab1N5fa358da.jpg',
'https://img10.360buyimg.com/da/jfs/t15181/264/2141469177/100278/a325be09/5a7134eaNd79570bc.jpg',
'https://m.360buyimg.com/babel/jfs/t19699/281/383788365/50387/1ddabaee/5a719ce8Nee5a9273.jpg'
]


通过比较传统的方式实现

var img = [],
    flag = 0;
for(var i = 0, len = imgStr.length; i < len; i++) {
  img[i] = new Image();
  img[i].src = imgStr[i];
  img[i].onload = function() {
    flag++
    if(flag === imgStr.length) {
        console.log('已全部加载完毕')  
    }
  }
}


通过Promise方式实现

 let imgLoadAll = [], img = [];
 for(let i = 0, len = imgStr.length; i < len; i++) {
     imgLoadAll[i] = new Promise((resolve, reject)=>{
         img[i] = new Image()
         img[i].src = imgStr[i]
         img[i].onload = function() {
            resolve(img[i])
         }
         img[i].onerror = function() {
            reject(img[i])
         }
     })
 }

// 第一张图加载完毕
imgLoadAll[0].then((img) => {
  console.log('第一张图加载完毕')
}).catch((img)=> {
  console.log('第一张图加载失败')
})

// 全部加载完毕
Promise.all(imgLoadAll).then((img) => {
  console.log('全部加载完毕')
}).catch((img)=> {
  console.log('全部加载失败')
})
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,466评论 25 708
  • 弄懂js异步 讲异步之前,我们必须掌握一个基础知识-event-loop。 我们知道JavaScript的一大特点...
    DCbryant阅读 2,750评论 0 5
  • 你不知道JS:异步 第三章:Promises 在第二章,我们指出了采用回调来表达异步和管理并发时的两种主要不足:缺...
    purple_force阅读 2,122评论 0 4
  • 2017年7月23日,凌晨5.21 最近每天晚上都很晚回家,常在人多的地方坐着发呆,我太需要一个异性的拥抱,或者说...
    卢白阅读 211评论 0 0
  • 看到自己仰慕的人就想去追赶他们看到自己瞧不上的人就想去超越他们所谓的长大成人应该就是在人生中无数次的重复这个过程吧...
    遇见Luck阅读 2,177评论 50 52