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
JavaScript
/* 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;