本文已参与「新人创作礼」活动,一起开启掘金创作之路。
防抖
防抖策略(debounce)是当事件被触发后,延迟 n 秒后再执行回调,如果在这 n 秒内事件又被触发,则重新计时。 进行重复操作时,设置时间间隔,以最后一次满足间隔的操作为准进行执行。简单来说:就是以满足间隔的最后一次为准执行事件。
应用场景 :用户在输入框中连续输入一串字符时,可以通过防抖策略,只在输入完后,才执行查询的请求,这样可以有效减少请求次数,节约请求资源。设置防抖操作可以减少页面中不必要的请求次数。
防抖:setTimeout + clearTimeout
// 设置防抖功能
var timer = null; // 用来保存进行防抖操作的定时器id
// 设置事件
$('#ipt').on('keyup', function () {
// 如果再次输入,将上次的定时器清除即可
clearTimeout(timer);
// 通过定时器控制
timer = setTimeout(function () {
getData(val);
}, 100);
});
// 封装函数,用来进行数据请求
function getData(val) {
$.ajax({
url: 'https://suggest.taobao.com/sug',
data: { q: val },// 淘宝的这个接口指定了请求参数名为q,代表要查询的内容
dataType: 'jsonp', // 使用jsonp方式发送请求
success: function (res) {
// 3 检测数据并创建结构(封装为函数,在多个地方使用)
renderList(res);
}
});
}