UNPKG

@ampush/centaurus

Version:

Centaurus, is an Ampush repository designed to house common UI components, JS classes, templates and API methods in a central place that can be imported and reused across other Ampush partner repositories as needed.

50 lines (48 loc) 1.13 kB
const Queue = () => { const queue = []; let workingOnPromise = false; const enqueue = (promise) => { return new Promise((resolve, reject) => { queue.push({ promise, resolve, reject, }); }); }; const dequeue = () => { if (workingOnPromise) { return false; } const item = queue.shift(); if (!item) { return false; } try { workingOnPromise = true; item .promise() .then((value) => { workingOnPromise = false; item.resolve(value); dequeue(); }) .catch((err) => { workingOnPromise = false; item.reject(err); dequeue(); }); } catch (err) { workingOnPromise = false; item.reject(err); dequeue(); } return true; }; return { enqueue, dequeue, }; }; export default Queue;