ajax延时请求问题

  1. 在做实时搜索时,给input标签设置input propertychange监听,然后进行实时请求,如果在监听事件里面直接进行请求,就会导致每一次输入的变化都会进行请求,但是有时候搜索词可能比较长,并不希望前面每次的变化都进行请求,这时就需要做一个延时请求的处理。
//定时器ID
var tid = null;
//延迟执行函数
function debounce(fn, wait) {
    //设定默认的延迟时间
    wait = wait || 500;
    //清除定时器
    tid && clearTimeout(tid);
    //定时器执行
    tid = setTimeout(fn, wait);
}
//搜索框监听
$("#search").bind("input propertychange", function (event) {
    if ("" != $("#search").val()) {
        debounce(function () {
            search($("#search").val());
        }, 500);
    } 
});
//ajax请求
function search(val){
  $.ajax({})
}

上述代码中,在监听到输入框有变化时,都会先触发debounce延时函数,延时函数实现原理:1,如果存在未执行的函数(延时时间内输入信息发生变化),则清除旧定时器,重新创建新的定时任务;2,如果不存在未执行的函数(第一次进入延时函数或者延时时间已过旧定时任务已完成),则创建新的定时任务。这样就能做到在延时时间内最多一次请求。

转载于:https://my.oschina.net/pureboys/blog/3076241

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值