源文件
This commit is contained in:
45
jeepay-ui-uapp-agent/util/debounce.js
Normal file
45
jeepay-ui-uapp-agent/util/debounce.js
Normal file
@@ -0,0 +1,45 @@
|
||||
/**
|
||||
* @param {Function} fn 需要执行的方法,因this指向问题,建议不使用箭头函数,
|
||||
* @param {Number} delay 间隔时间,默认值100
|
||||
* @param {Boolean} promptly 是否立即执行,默认false
|
||||
* **/
|
||||
export const debounce = (fn, delay = 100, promptly) => {
|
||||
let timer = null
|
||||
return function (...args) {
|
||||
// 立即执行
|
||||
if (promptly) {
|
||||
// 当timer为null时执行
|
||||
if (!timer) fn.apply(this, args)
|
||||
if (timer) {
|
||||
clearTimeout(timer)
|
||||
}
|
||||
timer = setTimeout(() => {
|
||||
timer = null
|
||||
}, delay)
|
||||
} else {
|
||||
if (timer) {
|
||||
clearTimeout(timer)
|
||||
}
|
||||
timer = setTimeout(() => {
|
||||
fn.apply(this, args)
|
||||
}, delay)
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @param {Function} fn 需要执行的方法,因this指向问题,建议不使用箭头函数,
|
||||
* @param {Number} delay 间隔时间,默认值100
|
||||
* **/
|
||||
const throttle = (fn, delay = 100) => {
|
||||
let valid = true
|
||||
return function (...args) {
|
||||
if (!valid) {
|
||||
return
|
||||
}
|
||||
valid = false
|
||||
fn.apply(this, args)
|
||||
setTimeout(() => {
|
||||
valid = true
|
||||
}, delay)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user