Merge pull request #144 from ente-io/fix-queue-processor

Fix queue processor
This commit is contained in:
Neeraj Gupta 2021-09-13 08:53:31 +05:30 committed by GitHub
commit 4b66fa59b6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -5,7 +5,7 @@ interface RequestQueueItem {
canceller: { exec: () => void }; canceller: { exec: () => void };
} }
interface RequestCanceller { export interface RequestCanceller {
exec: () => void; exec: () => void;
} }
@ -16,7 +16,9 @@ export default class QueueProcessor<T> {
constructor(private maxParallelProcesses: number) {} constructor(private maxParallelProcesses: number) {}
public queueUpRequest(request: () => Promise<T>) { public queueUpRequest(
request: (canceller?: RequestCanceller) => Promise<T>
) {
const isCanceled = { status: false }; const isCanceled = { status: false };
const canceller: RequestCanceller = { const canceller: RequestCanceller = {
exec: () => { exec: () => {
@ -48,7 +50,7 @@ export default class QueueProcessor<T> {
public async processQueue() { public async processQueue() {
while (this.requestQueue.length > 0) { while (this.requestQueue.length > 0) {
const queueItem = this.requestQueue.pop(); const queueItem = this.requestQueue.pop();
let response: string; let response = null;
if (queueItem.isCanceled.status) { if (queueItem.isCanceled.status) {
response = null; response = null;
@ -60,7 +62,6 @@ export default class QueueProcessor<T> {
} }
} }
queueItem.callback(response); queueItem.callback(response);
await this.processQueue();
} }
} }
} }