Spracherkennung für: .ts vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]
export type BackoffPolicy = {
initialMs: number;
maxMs: number;
factor: number;
jitter: number;
};
export function computeBackoff(policy: BackoffPolicy, attempt: number) {
const base = policy.initialMs * policy.factor ** Math.max(attempt - 1, 0);
const jitter = base * policy.jitter * Math.random();
return Math.min(policy.maxMs, Math.round(base + jitter));
}
export async function sleepWithAbort(ms: number, abortSignal?: AbortSignal) {
if (ms <= 0) {
return;
}
await new Promise<void>((resolve, reject) => {
let settled = false;
let timer: ReturnType<typeof setTimeout> | null = null;
const onAbort = () => {
if (settled) {
return;
}
settled = true;
if (timer) {
clearTimeout(timer);
timer = null;
}
if (abortSignal) {
abortSignal.removeEventListener("abort", onAbort);
}
reject(new Error("aborted", { cause: abortSignal?.reason ?? new Error("aborted") }));
};
if (abortSignal) {
abortSignal.addEventListener("abort", onAbort, { once: true });
if (abortSignal.aborted) {
onAbort();
return;
}
}
timer = setTimeout(() => {
settled = true;
if (abortSignal) {
abortSignal.removeEventListener("abort", onAbort);
}
timer = null;
resolve();
}, ms);
if (abortSignal) {
if (abortSignal.aborted) {
onAbort();
}
}
});
}
¤ Dauer der Verarbeitung: 0.18 Sekunden
(vorverarbeitet am 2026-04-27)
¤
*© Formatika GbR, Deutschland