老师有问题

老师有问题

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <meta http-equiv="X-UA-Compatible" content="ie=edge">

  <title>Document</title>

</head>

<body>

  <script>

    // 页面中有个板块,需要多张图片加载完之后才能进行显示

    const loadImg = (src) => {

      return new Promise((resolve, reject) => {

        const img = new Image()

        img.src = src

        img.onload = () => {

          resolve(img)

        }

        img.onerror = (e) => {

          reject(e)

        }

      })

    }


    const imgs = [

      'https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=2388423280,1026625885&fm=26&gp=0.jpg',

      'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1587367204797&di=515f64f5dbc89e9d025c24f1cfc09671&imgtype=0&src=http%3A%2F%2Fa0.att.hudong.com%2F78%2F52%2F01200000123847134434529793168.jpg',

      'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1587367204796&di=70170ed88f2f5aa6055ae09e9cf9c035&imgtype=0&src=http%3A%2F%2Fa4.att.hudong.com%2F21%2F09%2F01200000026352136359091694357.jpg',

      'aa'

    ]


    const promises = imgs.map((img) => {

      return loadImg(img)

    })

    // map会返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

    Promise.all(promises).then((arr) => {

      console.log(arr)

      arr.forEach((img) => {

        document.body.appendChild(img)

      })

    }).catch((e) => {

      console.log(e)

    })

  </script>

</body>

</html>

代码中 

img.onload = () => {

          resolve(img)

        }

        img.onerror = (e) => {

          reject(e)

        }

这两个函数没有被调用,它是怎么判断是成功状态还是失败状态的?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕慕子 2020-04-22 15:02:29

同学你好,这两个函数在图片加载成功或失败会自动触发,然后执行函数里面代码。如下:

图片成功加载后,就会自动触发如下函数。

http://img1.sycdn.imooc.com//climg/5e9feb67093aea3505060250.jpg

图片加载失败后,就会自动触发如下函数

http://img1.sycdn.imooc.com//climg/5e9feb7809605f7605860290.jpg

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 提问者 原来是晓琪_ #1
    onload和onerror 是自定义函数 不是自带的函数吧 为什么可以自动触发呢
    2020-04-23 11:55:32
  • 好帮手慕慕子 回复 提问者 原来是晓琪_ #2
    同学你好, onload和是onerror是js中已经定义好的方法,在图片加载成功或失败后会自动触发的,祝学习愉快~
    2020-04-23 13:37:19
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师