feat: 初始化
This commit is contained in:
77
uni_modules/lime-shared/throttle/index.ts
Normal file
77
uni_modules/lime-shared/throttle/index.ts
Normal file
@ -0,0 +1,77 @@
|
||||
// @ts-nocheck
|
||||
/**
|
||||
* 节流函数,用于限制函数的调用频率
|
||||
* @param fn 要进行节流的函数
|
||||
* @param delay 两次调用之间的最小间隔时间
|
||||
* @returns 节流后的函数
|
||||
*/
|
||||
|
||||
// #ifndef APP-IOS || APP-ANDROID
|
||||
export function throttle(fn: (...args: any[]) => void, delay: number) {
|
||||
let flag = true; // 标记是否可以执行函数
|
||||
|
||||
return (...args: any[]) => {
|
||||
if (flag) {
|
||||
flag = false; // 设置为不可执行状态
|
||||
fn(...args); // 执行传入的函数
|
||||
|
||||
setTimeout(() => {
|
||||
flag = true; // 经过指定时间后,设置为可执行状态
|
||||
}, delay);
|
||||
}
|
||||
};
|
||||
}
|
||||
// #endif
|
||||
|
||||
|
||||
// #ifdef APP-IOS || APP-ANDROID
|
||||
// type Rfun = (...args: any[]) => void
|
||||
// type Rfun = (...args: any[]) => void
|
||||
|
||||
export function throttle<T extends any|null>(
|
||||
fn: (args : T) => void,
|
||||
delay: number):(args : T) => void {
|
||||
let flag = true; // 标记是否可以执行函数
|
||||
|
||||
return (args : T) =>{
|
||||
if(flag){
|
||||
flag = false;
|
||||
fn(args);
|
||||
|
||||
setTimeout(()=>{
|
||||
flag = true;
|
||||
}, delay)
|
||||
}
|
||||
}
|
||||
// return (...args: any[]) => {
|
||||
// // if (flag) {
|
||||
// // flag = false; // 设置为不可执行状态
|
||||
// // fn(...args); // 执行传入的函数
|
||||
|
||||
// // setTimeout(() => {
|
||||
// // flag = true; // 经过指定时间后,设置为可执行状态
|
||||
// // }, delay);
|
||||
// // }
|
||||
// };
|
||||
}
|
||||
|
||||
// #endif
|
||||
|
||||
// // 示例
|
||||
// // 定义一个被节流的函数
|
||||
// function handleScroll() {
|
||||
// console.log("Scroll event handled!");
|
||||
// }
|
||||
|
||||
// // 使用节流函数对 handleScroll 进行节流,间隔时间为 500 毫秒
|
||||
// const throttledScroll = throttle(handleScroll, 500);
|
||||
|
||||
// // 模拟多次调用 handleScroll
|
||||
// throttledScroll(); // 输出 "Scroll event handled!"
|
||||
// throttledScroll(); // 不会输出
|
||||
// throttledScroll(); // 不会输出
|
||||
|
||||
// // 经过 500 毫秒后,再次调用 handleScroll
|
||||
// setTimeout(() => {
|
||||
// throttledScroll(); // 输出 "Scroll event handled!"
|
||||
// }, 500);
|
Reference in New Issue
Block a user