1.1非可执行版本
1.2立即执行版本
1.3合并版本
1.4合并版本+立即取消等待
2.1非可执行版本
2.2立即执行版本
2.3合并版本
2.4合并版本+立即取消等待
//防抖(非立即执行)
功能debounce_1() fn,等等){
让timerId = null;
返回 功能(){
clearTimeout(timerId);
timerId = setTimeout(()=>{
// 防抖(立即执行)
function debounce_2(fn,wait){
让timerId = null;
让标志=true ;
返回 功能( ) fn.apply(这个,参数 ; => { flag = 是的},等等)
}
}
//抖防(合并版)
功能 debounce_merge(fn,wait = 500, isImmediate = false){
lettimerId = null;
let flag = true;
if(是立即){
返回 功能(){ clearTimeout(timerId);
if(标志){
fn.apply(this,参数);
标志= false
}
timerId = setTimeout(() => { 标志 = true},等等)
}
} 返回 功能( ){
clearTimeout(timerId);
timerId = setTimeout(() => {
fn.apply(这个,争论)
},等等)
}
}
//防抖(合并版)
导出 const debounce = function ( fn,等待 = 500,isImmediate = false ) {
//定时器
让timerId = null;
// flag 为 true 时立即执行执行
let flag = true;
let resultFunc = null;
if (isImmediate) {
//立即执行
//节流(立即执行)
功能throttle_ 2(fn,等等 ){
var 标志 = true;
var计时器 = null;
返回 功能(){
if(标志){
这个,参数);
“ flag = false; 计时器 = setTimeout(() => {
旗帜 = 正确
合并版//节流(合并)
功能ionthrottle_merge(fn,等待= 500,isImmediate = false) {
让标志=true ;
让 计时器= null;
if(立即){
返回 函数(){
if(标志){
fn.apply(这个,参数);
flag = false;
计时器 = setTimeout() () => {
旗帜= true
},等等)
}
}
}
返回 功能(){
if(标志===真){
标志= 假
var定时器=setTimeout(() => {
fn.apply(这个,参数) 旗帜= true
},等等)
}
}
}
2.4 合并版 + 立即取消等待
//节流(合并)
导出 const 油门 = 功能 (fn,等等= 500, isImmediate = false) {
让 标志= true;
让定时器=null;
让结果Func = null;
if (isImmediate) {
//立即执行
结果Func = 函数 () {
if (标志) {
fn.apply(这个, arguments);
flag =false; timer = settimeout(()=>{
{
flag =true
},等等)
}
}
resultFunc.cancel = 功能 () {
控制台 .log("立即取消等待")
clearTimeout(timer)
}
} else {
// 不立即执行
结果Func = 函数 () {
if(标志== true){
标志 = false
计时器 = setTimeout(() => {
fn.apply(this , 参数) 标志 = rTrue
},等待)}}}
resultfunc.cancel = 函数 () {
{
{
console.log("立即取消等待")
clearTimeout(定时器);
flag = 真;
}
}
返回 resultFunc;
}