23 lines
1.5 KiB
JavaScript
23 lines
1.5 KiB
JavaScript
|
|
/* IMPORT */
|
||
|
|
import makeNakedPromise from '../promise-make-naked/index.js';
|
||
|
|
/* MAIN */
|
||
|
|
const isFunction = (value) => {
|
||
|
|
return (typeof value === 'function');
|
||
|
|
};
|
||
|
|
const makeCounterPromise = () => {
|
||
|
|
const { promise, resolve } = makeNakedPromise();
|
||
|
|
let counter = 0;
|
||
|
|
const increment = () => {
|
||
|
|
counter += 1;
|
||
|
|
};
|
||
|
|
const decrement = () => {
|
||
|
|
counter -= 1;
|
||
|
|
if (counter)
|
||
|
|
return;
|
||
|
|
resolve();
|
||
|
|
};
|
||
|
|
return { promise, increment, decrement };
|
||
|
|
};
|
||
|
|
/* EXPORT */
|
||
|
|
export { isFunction, makeCounterPromise };
|
||
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy90aW55LXJlYWRkaXIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWTtBQUVaLE9BQU8sZ0JBQWdCLE1BQU0sZ0NBQWdDLENBQUM7QUFHOUQsVUFBVTtBQUVWLE1BQU0sVUFBVSxHQUFHLENBQUUsS0FBYyxFQUFzQixFQUFFO0lBRXpELE9BQU8sQ0FBRSxPQUFPLEtBQUssS0FBSyxVQUFVLENBQUUsQ0FBQztBQUV6QyxDQUFDLENBQUM7QUFFRixNQUFNLGtCQUFrQixHQUFHLEdBQXlFLEVBQUU7SUFFcEcsTUFBTSxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUMsR0FBRyxnQkFBZ0IsRUFBUyxDQUFDO0lBRXJELElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztJQUVoQixNQUFNLFNBQVMsR0FBRyxHQUFTLEVBQUU7UUFFM0IsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUVmLENBQUMsQ0FBQztJQUVGLE1BQU0sU0FBUyxHQUFHLEdBQVMsRUFBRTtRQUUzQixPQUFPLElBQUksQ0FBQyxDQUFDO1FBRWIsSUFBSyxPQUFPO1lBQUcsT0FBTztRQUV0QixPQUFPLEVBQUcsQ0FBQztJQUViLENBQUMsQ0FBQztJQUVGLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBRTNDLENBQUMsQ0FBQztBQUVGLFlBQVk7QUFFWixPQUFPLEVBQUMsVUFBVSxFQUFFLGtCQUFrQixFQUFDLENBQUMifQ==
|