UNPKG

promise-make-counter

Version:

A simple function that makes a counter-based promise, which can be incremented and decremented, and it resolves once its counter reaches zero.

25 lines (24 loc) 581 B
/* IMPORT */ import makeNakedPromise from 'promise-make-naked'; /* MAIN */ const makeCounterPromise = () => { const { promise, resolve, isPending } = makeNakedPromise(); let counter = 0; const increment = () => { counter += 1; }; const decrement = () => { counter -= 1; if (counter) return; resolve(); }; const init = () => { increment(); queueMicrotask(decrement); }; init(); return { promise, isPending, increment, decrement }; }; /* EXPORT */ export default makeCounterPromise;