防抖节流装饰器

This commit is contained in:
aixianling
2023-03-22 16:30:43 +08:00
parent 81dbd135e2
commit 99480dc8d3

View File

@@ -45,15 +45,14 @@ export function loading() {
* @returns {(function(*, *, *): void)|*} * @returns {(function(*, *, *): void)|*}
*/ */
export function throttle(wait) { export function throttle(wait) {
return function (target, name, descriptor) { let timer;
return function (t, n, descriptor) {
const origin = descriptor.value const origin = descriptor.value
let lock = false
descriptor.value = function () { descriptor.value = function () {
if (!lock) { if (!timer) {
lock = true
origin.apply(this, arguments)
setTimeout(() => { setTimeout(() => {
lock = false origin.apply(this, arguments)
timer = null
}, wait) }, wait)
} }
} }
@@ -83,3 +82,21 @@ export function load(sdk, interval = 200, name = "") {
} }
} }
} }
/**
* 防抖装饰器
* @param delay 防抖时间
* @returns {(function(*, *, *): void)|*}
*/
export function debounce(delay) {
let timer = null;
return function (t, n, descriptor) {
const origin = descriptor.value
descriptor.value = function () {
clearTimeout(timer);
timer = setTimeout(() => {
origin.apply(this, arguments)
}, delay)
}
}
}