This commit is contained in:
34
docs/snippets/wasm/advanced/error-recovery.ts
Normal file
34
docs/snippets/wasm/advanced/error-recovery.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
import { extractBytes, initWasm } from "@kreuzberg/wasm";
|
||||
|
||||
async function extractWithRetry(bytes: Uint8Array, mimeType: string, maxRetries: number = 3) {
|
||||
await initWasm();
|
||||
|
||||
let lastError: Error | null = null;
|
||||
|
||||
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
||||
try {
|
||||
console.log(`Extraction attempt ${attempt}/${maxRetries}`);
|
||||
const result = await extractBytes(bytes, mimeType);
|
||||
console.log("Extraction successful");
|
||||
return result;
|
||||
} catch (error) {
|
||||
lastError = error instanceof Error ? error : new Error(String(error));
|
||||
console.warn(`Attempt ${attempt} failed:`, lastError.message);
|
||||
|
||||
if (attempt < maxRetries) {
|
||||
const delay = 2 ** attempt * 100;
|
||||
console.log(`Retrying in ${delay}ms...`);
|
||||
await new Promise((resolve) => setTimeout(resolve, delay));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
throw new Error(`Extraction failed after ${maxRetries} attempts: ${lastError?.message}`);
|
||||
}
|
||||
|
||||
extractWithRetry(
|
||||
new Uint8Array(await fetch("doc.pdf").then((r) => r.arrayBuffer())),
|
||||
"application/pdf",
|
||||
)
|
||||
.then((r) => console.log("Final result:", r))
|
||||
.catch(console.error);
|
||||
Reference in New Issue
Block a user