Skip to content

Instantly share code, notes, and snippets.

@sterlu
Last active February 11, 2025 15:14
Show Gist options
  • Save sterlu/1a1a7418f99bd421ad100363f666b0e3 to your computer and use it in GitHub Desktop.
Save sterlu/1a1a7418f99bd421ad100363f666b0e3 to your computer and use it in GitHub Desktop.
type Task<T> = () => Promise<T>;
const tasks: Task<number>[] = [
() => new Promise((resolve) => setTimeout(() => resolve(1), 1000)),
() => new Promise((resolve) => setTimeout(() => resolve(2), 2000)),
() => new Promise((resolve) => setTimeout(() => resolve(3), 1000)),
() => new Promise((resolve) => setTimeout(() => resolve(4), 3000)),
() => new Promise((resolve) => setTimeout(() => resolve(5), 1000)),
() => new Promise((resolve) => setTimeout(() => resolve(6), 2000)),
() => new Promise((resolve) => setTimeout(() => resolve(7), 2000)),
() => new Promise((resolve) => setTimeout(() => resolve(8), 4000)),
() => new Promise((resolve) => setTimeout(() => resolve(9), 2000)),
() => new Promise((resolve) => setTimeout(() => resolve(1), 5000)),
];
class TaskRunner<T> {
constructor(private tasks: Task<T>[], private concurency: number) {
this.tasks = tasks;
}
public async run(): Promise<T[]> {
// Implement the task runner
return [];
}
}
const taskRunner = new TaskRunner<number>(tasks, 3);
taskRunner.run().then((results: number[]) => {
console.log(results);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment