-loading加载效果--/防抖优化-/节流优化-

01-loading加载效果

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <button>点击获取英雄数据</button>
    <br />
    <!-- Loading 结构,默认隐藏 -->
    <img class="loading" hidden src="./img/loading.gif" alt="" />
    <script src="./libs/jquery.min.js"></script>
    <script>
      $('button').click(() => {
        $.ajax({
          type: 'get',
          url: 'http://127.0.0.1:3001/getStudentsJSONDelay',
          success: (res) => {
            console.log('请求成功 success', res)
          },
          // 请求前会自动触发
          beforeSend: () => {
            console.log('请求前会自动触发 beforeSend')
            // 请求发送前:显示加载效果
            $('.loading').show()
          },
          // 请求完成后自动触发(成功失败都会执行)
          complete: () => {
            console.log('请求完成后自动触发 complete')
            // 请求完成后,隐藏加载效果
            $('.loading').hide()
          },
        })
      })
    </script>
  </body>
</html>



02-防抖优化

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <h1>搜索提示效果</h1>
    <input class="search-input" type="text" />
    <ul id="list"></ul>
    <script src="./libs/jquery.js"></script>
    <script src="./libs/template-web.js"></script>
    <script id="hero" type="text/html">
      {{ each list v }}
      <li>{{ v.name }}</li>
      {{ /each }}
    </script>

    <script>
      // 🔔 准备一个变量,用于存放延时器id
      let timerId
      // keyup 键盘事件可以同步获取输入框的内容
      $('.search-input').keyup(function () {
        // 获取输入框内容
        const str = $(this).val().trim()
        // console.log(str)
        // 🔔 如果之前有延时器,则根据id清除掉之前的延时器
        if (timerId) clearTimeout(timerId)
        // 🔔 启动延时器,把并存储延时器的 id
        timerId = setTimeout(() => {
          $.ajax({
            type: 'get',
            url: 'http://127.0.0.1:3001/getHeroList',
            data: { heroName: str },
            success: (res) => {
              console.log(res)

              const htmlStr = template('hero', { list: res.data })
              $('#list').html(htmlStr)
            },
          })
        }, 500)
      })
    </script>
  </body>
</html>



03-节流优化

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <button>节流:技能冷却/抢票...-</button>
    <script src="./libs/jquery.min.js"></script>
    <script>
      // 初始化延时器,默认没有延时器
      let timerId = null
      $('button').click(function () {
        // 🎃 如果有延时器正在执行,则退出
        if (timerId) return
        // 启动延时器,存储延时器的 id 
        timerId = setTimeout(() => {
          console.log('放技能/抢票...')
          // 当定时器执行完毕,重置延时器变量,重新表示默认没有延时器
          timerId = null
        }, 500)
      })
    </script>
  </body>
</html>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值