debounce和throttle,可视化比较网址
函数名称 |
介绍 |
举例 |
应用场景 |
防抖函数(debounce) |
触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间 |
打个比方,坐公交,司机需要等最后一个人进入才能关门。每次进入一个人,司机就会多等待几秒再关门 |
+搜索框搜索输入+表单验证+窗口大Resize |
节流函数(throttle) |
限制一个函数在一定时间内只能执行一次 |
举个例子,乘坐地铁,过闸机时,每个人进入后3秒后门关闭,等待下一个人进入。 |
+滚动加载,加载更多或滚到底部监听+谷歌搜索框,搜索联想功能 +高频点击提交,表单重复提交 |
防抖函数_.debounce()
// 避免在窗口大小不断变化的情况下进行重复的计算
jQuery(window).on('resize', _.debounce(calculateLayout, 150));
// 单击时调用“sendMail”,取消后续调用。
jQuery(element).on('click', _.debounce(sendMail, 300, {
'leading': true,
'trailing': false
}));
// 确保在1秒的取消抖动调用后调用“batchLog”。
var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
var source = new EventSource('/stream');
jQuery(source).on('message', debounced);
// 取消尾随的去抖动调用。
jQuery(window).on('popstate', deb