35 lines
825 B
JavaScript
35 lines
825 B
JavaScript
class TimeHelper {
|
|
static throttle(func, limit) {
|
|
let inThrottle
|
|
return function() {
|
|
const args = arguments
|
|
const context = this
|
|
if (!inThrottle) {
|
|
func.apply(context, args)
|
|
inThrottle = true
|
|
setTimeout(() => inThrottle = false, limit)
|
|
}
|
|
}
|
|
}
|
|
|
|
static throttleLast(func, limit) {
|
|
let lastFunc
|
|
let lastRan
|
|
return function() {
|
|
const context = this
|
|
const args = arguments
|
|
if (!lastRan) {
|
|
func.apply(context, args)
|
|
lastRan = Date.now()
|
|
} else {
|
|
clearTimeout(lastFunc)
|
|
lastFunc = setTimeout(function() {
|
|
if ((Date.now() - lastRan) >= limit) {
|
|
func.apply(context, args)
|
|
lastRan = Date.now()
|
|
}
|
|
}, limit - (Date.now() - lastRan))
|
|
}
|
|
}
|
|
}
|
|
} |