Fixes and improvements
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
type Job<T> = () => Promise<T>;
|
||||
|
||||
let tail = Promise.resolve();
|
||||
let pendingJobs = 0;
|
||||
|
||||
export function queueSequential<T>(job: Job<T>): Promise<T> {
|
||||
pendingJobs += 1;
|
||||
|
||||
const run = tail.then(async () => {
|
||||
try {
|
||||
return await job();
|
||||
} finally {
|
||||
pendingJobs -= 1;
|
||||
}
|
||||
});
|
||||
|
||||
tail = run.then(
|
||||
() => undefined,
|
||||
() => undefined
|
||||
);
|
||||
|
||||
return run;
|
||||
}
|
||||
|
||||
export function queuedJobCount() {
|
||||
return pendingJobs;
|
||||
}
|
||||
Reference in New Issue
Block a user