Files
fizzy/app/javascript/helpers/timing_helpers.js
T
Jorge Manrubia 72fb15dd0f Pagination working for columns
Bring pagination system from KIA that is compatible with page refreshes
2025-09-28 14:21:16 +02:00

45 lines
1001 B
JavaScript

export function throttle(fn, delay = 1000) {
let timeoutId = null
return (...args) => {
if (!timeoutId) {
fn(...args)
timeoutId = setTimeout(() => timeoutId = null, delay)
}
}
}
export function debounce(fn, delay = 1000) {
let timeoutId = null
return (...args) => {
clearTimeout(timeoutId)
timeoutId = setTimeout(() => fn.apply(this, args), delay)
}
}
export function nextEventLoopTick() {
return delay(0)
}
export function onNextEventLoopTick(callback) {
setTimeout(callback, 0)
}
export function nextEvent(element, eventName) {
return new Promise(resolve => element.addEventListener(eventName, resolve, { once: true }))
}
export function nextFrame() {
return new Promise(requestAnimationFrame)
}
export function nextEventNamed(eventName, element = window) {
return new Promise(resolve => element.addEventListener(eventName, resolve, { once: true }))
}
export function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms))
}