第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

【九月打卡】第6天 前端工程師2022版 項(xiàng)目應(yīng)用實(shí)戰(zhàn):async/await

標(biāo)簽:
JavaScript

课程名称:await 函数用法

课程章节:页面加载进度条

课程讲师: Alex

课程内容:

页面加载进度条

对于一些需要加载大量图片的网站,刚打开可能只是一张空白页面,然后才是图片的慢慢加载,这种用户体验比较糟糕

所以,我们可以给这个网站做一个加载进度条,在图片加载完成之前只显示加载进度条,每完成一张图片的加载,进度条就往前走一点,直到所有的图片都加载完毕,进度条显示100%,进度条消失,内容才显示出来

这样可以在一定程度上提升用户体验,效果:

https://img1.sycdn.imooc.com//631ca5fd0001af7308920490.jpg

https://img1.sycdn.imooc.com//631ca5fe0001afde09190646.jpg

https://img1.sycdn.imooc.com//631ca5fe0001e1d108640484.jpg

进度条:progress  内容;content  先是隐藏起来的,等进度条展示100%,进度条隐藏,隐藏的方式:在content上加 none

<div id="progress" class="progress">0%</div>

 <div id="content" class="none"></div>


样式:

html,
      body,
      .progress {
        padding: 0;
        margin: 0;
        width: 100%;
        height: 100%;
      }
      img {
        max-width: 100%;
      }
      .progress {
        display: flex;
        justify-content: center;
        align-items: center;
      }
      .none {
        display: none;
      }
<script>
      function wait(ms) {
        return new Promise(resolve => {
          setTimeout(resolve, ms);
        });
      }

      function loadImgAsync(url) {
        return new Promise((resolve, reject) => {
          const $img = new Image();

          $img.addEventListener(
            'load',
            async () => {
              // await wait(1000);
              resolve($img);
            },
            false
          );
          $img.addEventListener(
            'error',
            () => {
              reject(new Error('Could not load image at ' + url));
            },
            false
          );

          $img.src = url;
        });
      }

      class Progress {
        constructor($el) {
          this.$el = $el;
        }

        update(done, total) {
          this.$el.innerHTML = `${parseInt((done / total) * 100)}%`;
        }

        hide() {
          this.$el.classList.add('none');
        }
      }

      (async () => {
        // const imgUrls = ['./ad.jpg', './ad_psyc.jpg', './logo.png'];
        const imgUrls = [
          'https://img1.mydrivers.com/Img/20100731/08213345.jpg',
          'https://img1.mydrivers.com/Img/20100731/08230220.jpg',
          'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg2.niutuku.com%2Fdesk%2F1208%2F2007%2Fntk-2007-25584.jpg&refer=http%3A%2F%2Fimg2.niutuku.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1654222356&t=c1a0d60776a99882cc8e22192c4b12c1',
          ''
        ];
        const total = imgUrls.length;
        let done = 0;
        const $content = document.getElementById('content');
        const progress = new Progress(document.getElementById('progress'));
        
        
        // 继发
        // for (const url of imgUrls) {
        //   const $img = await loadImgAsync(url);
        //   // console.log($img);
        //   $content.appendChild($img);
        //   done++;
        //   progress.update(done, total);
        // }
        // await loadImgAsync(url);
        // await loadImgAsync(url);
        // await loadImgAsync(url);

        // 并发
        // 处理异步操作时,如果不存在继发关系,最好让它们并发执行
        // async 函数内部是同步执行的,它本身是异步的
        imgUrls.forEach(async url => {
          try {
            const $img = await loadImgAsync(url);
            $content.appendChild($img);
            done++;
            progress.update(done, total);
          } catch (error) {
            console.log(error);
          }
        });

        await wait(1000);
        progress.hide();
        $content.classList.remove('none');
      })();
    </script>



今天学习到此为止,加油


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消