UNPKG

nanostores

Version:

A tiny (265 bytes) state manager for React/Preact/Vue/Svelte with many atomic tree-shakable stores

36 lines (31 loc) 582 B
let tasks = 0 let resolves = [] export function startTask() { tasks += 1 return () => { tasks -= 1 if (tasks === 0) { let prevResolves = resolves resolves = [] for (let i of prevResolves) i() } } } export function task(cb) { let endTask = startTask() let promise = cb().finally(endTask) promise.t = true return promise } export function allTasks() { if (tasks === 0) { return Promise.resolve() } else { return new Promise(resolve => { resolves.push(resolve) }) } } export function cleanTasks() { tasks = 0 }