initial commit
This commit is contained in:
34
node_modules/atomically/dist/utils/scheduler.js
generated
vendored
Normal file
34
node_modules/atomically/dist/utils/scheduler.js
generated
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
/* IMPORT */
|
||||
/* HELPERS */
|
||||
const Queues = {};
|
||||
/* MAIN */
|
||||
//TODO: Maybe publish this as a standalone package
|
||||
const Scheduler = {
|
||||
/* API */
|
||||
next: (id) => {
|
||||
const queue = Queues[id];
|
||||
if (!queue)
|
||||
return;
|
||||
queue.shift();
|
||||
const job = queue[0];
|
||||
if (job) {
|
||||
job(() => Scheduler.next(id));
|
||||
}
|
||||
else {
|
||||
delete Queues[id];
|
||||
}
|
||||
},
|
||||
schedule: (id) => {
|
||||
return new Promise(resolve => {
|
||||
let queue = Queues[id];
|
||||
if (!queue)
|
||||
queue = Queues[id] = [];
|
||||
queue.push(resolve);
|
||||
if (queue.length > 1)
|
||||
return;
|
||||
resolve(() => Scheduler.next(id));
|
||||
});
|
||||
}
|
||||
};
|
||||
/* EXPORT */
|
||||
export default Scheduler;
|
||||
Reference in New Issue
Block a user