js 防抖 节流处理 应用场景

3 篇文章 0 订阅

防抖

应用场景 :

1 百度联想查询 : 百度搜nike 会等你输入完nike后 页面跳转 不是你输入完n就立刻给你查询结果

2 页面滚动特定距离 显示【返回顶部按钮】

3 页面resize 触发事件 

代码

HTML

<input type="text" id="unDebounce">


JS

function ajax(content) {
        console.info(this)
        console.log('ajax request ' + content)
    }
function debounce(fun,delay){
  return function (args) {
    let that = this
    let _args = args
    clearTimeout(fun.id)
    fun.id = setTimeout(function () {
        fun.call(that,_args)
    },delay)
  }
}
let inputb = document.getElementById('debounce')
let debounceAjax = debounce(ajax,500)
inputb.addEventListener('keyup',function (e) {
    debounceAjax(e.target.value)
})

节流

应用场景

1 连续点击按钮 切 需求为 间隔请求   例如  页面的【刷新】按钮 

2 上拉加载获取数据 的【上拉加载】

代码

HTML

<input type="text" id="throttle">

JS

function ajax(content) {
  console.log('ajax request ' + content)
}

let throttle = function (fn, delay) {
    let last, deferTimer
    return function () {
        let that = this
        let _args = arguments
        let now  = +new Date() 
        if(last && now < (last + delay)){
          clearTimeout(deferTimer)
          deferTimer = setTimeout(function () {
               last = now
               fn.apply(that,_args)
          },delay)
        }else{
          last = now
          fn.apply(that,_args)
        }
    }
}
let throttleAjax = throttle(ajax,1000)
let throttleBtn = document.getElementById('throttle')
throttleBtn.addEventListener('keyup',function (e) {
    throttleAjax(e.target.value)
})

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值