throttle 应用场景:鼠标多次点击按钮进行操作,输入框频繁搜索内容等条件下,为节省资源使用节流。(单位时间内只触发一次)
debounce应用场景:滚动加载请求数据,window触发resize的时候,使用防抖函数可以让其只在最后触发一次。
节流(throttle)和防抖(debounce)的区别:函数防抖和函数节流都是防止某一时间频繁触发,防抖和节流原理却不一样。函数防抖是某一段时间内只执行一次,而函数节流是间隔时间执行。节流是在频繁操作的情况下按照给定的时间定时执行,防抖在频繁操作过程中会清楚上次的执行时间重新进行计算,从而只执行一次,类似于人进入电梯时电梯关门时间的处理。
vue文档中有提到debounce,但该在2.0已被属性被移除及处理,推荐lodash
示例:使用 lodash 的防抖函数 (debounce ),进行滚动加载数据的操作(当滚动条距离底部小于30px,请求)
<template>
<div @scroll.passive="scrollEvent" style="height:100%;overflow:auto;">
<div v-show="isloading">
<el-table :data="tableData">