Files
Coltura/frontend/shared/utils/debounce.ts
Matthieu 4c142aecbb refactor(front) : extrait debounce dans shared/utils + tests Vitest
T-013 — sort la fonction debounce inline de audit-log.vue vers
frontend/shared/utils/debounce.ts (auto-importe par Nuxt) et ajoute
3 tests Vitest (delay coalesce, derniere invocation gagne, plusieurs
executions espacees). Pret pour reutilisation sur les prochaines
pages avec recherche/filtres.
2026-04-23 11:46:13 +02:00

16 lines
646 B
TypeScript

/**
* Utilitaire de debounce partage.
*
* Retarde l'execution d'une fonction : chaque appel reset un timer et
* l'execution reelle n'a lieu qu'apres `delay` ms sans nouvelle invocation.
* Utile pour eviter un spam d'appels reseau sur un champ de recherche
* (une requete par touche -> une seule requete apres la derniere frappe).
*/
export function debounce<T extends (...args: never[]) => void>(fn: T, delay: number): T {
let timer: ReturnType<typeof setTimeout> | null = null
return ((...args: Parameters<T>) => {
if (null !== timer) clearTimeout(timer)
timer = setTimeout(() => fn(...args), delay)
}) as T
}