Initial move
This commit is contained in:
25
frontend/src/chunk-processor.ts
Normal file
25
frontend/src/chunk-processor.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
export class ChunkProcessor<T> {
|
||||
private chunkSize: number;
|
||||
|
||||
constructor(chunkSize: number = 1000) {
|
||||
this.chunkSize = chunkSize;
|
||||
}
|
||||
|
||||
async processArray(array: T[], callback: (chunk: T[]) => void): Promise<void> {
|
||||
const totalChunks = Math.ceil(array.length / this.chunkSize);
|
||||
|
||||
for (let i = 0; i < totalChunks; i++) {
|
||||
const chunk = array.slice(i * this.chunkSize, (i + 1) * this.chunkSize);
|
||||
await this.processChunk(chunk, callback);
|
||||
}
|
||||
}
|
||||
|
||||
private async processChunk(chunk: T[], callback: (chunk: T[]) => void): Promise<void> {
|
||||
return new Promise<void>((resolve) => {
|
||||
setTimeout(() => {
|
||||
callback(chunk);
|
||||
resolve();
|
||||
}, 0);
|
||||
});
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user