Sha256: 689a3a3091b767a94b16140aa2b5d599b68ea27614f6eaf0d9c6179b1d8c7706
Contents?: true
Size: 855 Bytes
Versions: 12
Compression:
Stored size: 855 Bytes
Contents
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 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)) }
Version data entries
12 entries across 12 versions & 1 rubygems