UNPKG

alpinejs

Version:

The rugged, minimal JavaScript framework

30 lines (22 loc) 470 B
let tickStack = [] let isHolding = false export function nextTick(callback = () => {}) { queueMicrotask(() => { isHolding || setTimeout(() => { releaseNextTicks() }) }) return new Promise((res) => { tickStack.push(() => { callback(); res(); }); }) } export function releaseNextTicks() { isHolding = false while (tickStack.length) tickStack.shift()() } export function holdNextTicks() { isHolding = true }