UNPKG

ai

Version:

AI SDK by Vercel - The AI Toolkit for TypeScript and JavaScript

37 lines (29 loc) 681 B
import { Job } from './job'; export class SerialJobExecutor { private queue: Array<Job> = []; private isProcessing = false; private async processQueue() { if (this.isProcessing) { return; } this.isProcessing = true; while (this.queue.length > 0) { await this.queue[0](); this.queue.shift(); } this.isProcessing = false; } async run(job: Job): Promise<void> { return new Promise<void>((resolve, reject) => { this.queue.push(async () => { try { await job(); resolve(); } catch (error) { reject(error); } }); void this.processQueue(); }); } }