Process slideshow requests in batches, add more memory
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
export async function handleProgressivePromises<T>(
|
||||
promises: Promise<T>[],
|
||||
async function processPromises<T>(
|
||||
promiseFns: (() => Promise<T>)[],
|
||||
onProgress: (result: T) => void,
|
||||
): Promise<(T | undefined)[]> {
|
||||
const allPromises = promises.map(async promise => {
|
||||
const allPromises = promiseFns.map(async promise => {
|
||||
try {
|
||||
const result = await promise;
|
||||
const result = await promise();
|
||||
onProgress(result)
|
||||
return result
|
||||
} catch (error) {
|
||||
@@ -17,3 +17,20 @@ export async function handleProgressivePromises<T>(
|
||||
result.status === 'fulfilled' ? result.value : undefined
|
||||
)
|
||||
}
|
||||
|
||||
export async function processPromisesInBatches<T>(
|
||||
promiseFns: (() => Promise<T>)[],
|
||||
onProgress: (result: T) => void,
|
||||
batchSize = 3,
|
||||
): Promise<(T | undefined)[]> {
|
||||
const results = []
|
||||
while(await promiseFns.length > 0) {
|
||||
const size = Math.min(batchSize, promiseFns.length)
|
||||
const batchPromises = promiseFns.splice(0, size)
|
||||
console.log('process:', batchPromises.length)
|
||||
const batchResults = await processPromises(batchPromises, onProgress)
|
||||
results.push(...batchResults)
|
||||
}
|
||||
|
||||
return results
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user