mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-22 12:20:34 +00:00

* feat: think tag parse * feat: parse think tag test * feat: pdf parse ux * feat: doc2x parse * perf: rewrite training mode setting * feat: image parse queue * perf: image index * feat: image parse process * feat: add init sh * fix: ts
40 lines
824 B
TypeScript
40 lines
824 B
TypeScript
export const delay = (ms: number) =>
|
|
new Promise((resolve) => {
|
|
setTimeout(() => {
|
|
resolve('');
|
|
}, ms);
|
|
});
|
|
|
|
export const retryFn = async <T>(fn: () => Promise<T>, retryTimes = 3): Promise<T> => {
|
|
try {
|
|
return fn();
|
|
} catch (error) {
|
|
if (retryTimes > 0) {
|
|
await delay(500);
|
|
return retryFn(fn, retryTimes - 1);
|
|
}
|
|
return Promise.reject(error);
|
|
}
|
|
};
|
|
|
|
export const batchRun = async <T>(arr: T[], fn: (arr: T) => any, batchSize = 10) => {
|
|
const batchArr = new Array(batchSize).fill(null);
|
|
const result: any[] = [];
|
|
|
|
const batchFn = async () => {
|
|
const data = arr.shift();
|
|
if (data) {
|
|
result.push(await fn(data));
|
|
return batchFn();
|
|
}
|
|
};
|
|
|
|
await Promise.all(
|
|
batchArr.map(async () => {
|
|
await batchFn();
|
|
})
|
|
);
|
|
|
|
return result;
|
|
};
|