防抖
防抖就是指触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间。
那么用代码怎么实现呢?
//接一个订单,和等待时间 function debounce(fn, delay){
let timerId = null return function(){
const context = this //如果接到订单就再等3分钟 if(timerId){
window.clearTimeout(timerId)} //3分钟没有接到订单就直接配送 timerId = setTimeout(()=>{
fn.apply(context, arguments) timerId = null },delay) } }
节流
节流就是指连续触发事件但是在 n 秒中只执行一次函数。节流会稀释函数的执行频率
那么用代码怎么实现呢?
function throttle(fn, delay){
// 设置一个触发开关 let canUse = true return function(){
//如果为true,就触发技能,否则就不能触发 if(canUse){
fn.apply(this, arguments) //触发技能后,关闭开关 canUse = false //在3秒后打开开关 setTimeout(()=>canUse = true, delay) } } }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233747.html原文链接:https://javaforall.net