函数节流是指一定时间内js方法只跑一次。比如人的眨眼睛,就是一定时间内眨一次。这是函数节流最形象的解释—scroll事件
函数防抖是指频繁触发的情况下,只有足够的空闲时间,才执行代码一次。比如生活中的坐公交,就是一定时间内,如果有人陆续刷卡上车,司机就不会开车。只有别人没刷卡了,司机才开车,—输入框事件 debounce去抖使用场景: 简单的说,当一个动作连续触发,则只执行最后一次。
当调用函数n秒后,才会执行该动作,若在这n秒内又调用该函数则将取消前一次并重新计算执行时间,举个简单的例子,我们要根据用户输入做搜索,每当用户按下键盘的时候都可以取消前一次,并且只关心最后一次输入的时间就行了。
demo1:当3毫秒之后才会去调用input函数,而且在3毫秒内input被重复调用,则取消上一次调用调用最后一次。
input: _.debounce(function() { if (!reg.test(this.question)) { this.answer = 'Questions usually end with a question mark. ;-)'; return; } this.answer = 'Thinking ... '; let self = this; axios.get('https://---------') .then((response) = > { this.answer = _.capitalize(response.data.answer) }). catch ((error) = > { this.answer = 'Error! Could not reach the API. ' + error }) },300) // 这是我们为判定用户停止输入等待的毫秒数demo2
<script> import swiper from "../components/subcomponents/swiper.vue" import _ from 'lodash' export default { beforeCreate() { this.msg="你好" }, methods: { getLunbotu() {}, input: _.debounce(function () { console.log("ok") },2000) } }; </script>这个例子,当2秒后没有输入事件了会去执行这个input事件,如果2秒之内input事件被重复调用,则只调用最后一次。