Skip to content

debounce

La fonction debounce() retarde l'exécution d'un flow. Si un nouvel appel du même flow arrive avant la fin du délai, l'appel précédent est annulé et retourne params.returnValue.

Exemple interactif

Syntaxe

typescript
function debounce<
	GenericValue extends unknown = undefined
>(
	time: number,
	params?: {
		returnValue?: GenericValue;
	}
): AsyncGenerator

Paramètres

  • time : Délai à attendre avant de laisser continuer l'exécution courante.
  • params.returnValue : Valeur retournée quand un appel précédent est remplacé pendant le délai de debounce.

Valeur de retour

debounce() retourne un générateur asynchrone. Le runner attend le délai avant de poursuivre la dernière exécution conservée, et termine les exécutions remplacées avec params.returnValue.

Remarques

  • L'état interne est stocké dans une WeakMap dont la clé est la référence du flow exécuté.
  • Pour partager la même fenêtre de debounce entre plusieurs appels, réutilisez le même flow créé avec F.create(...) ou la même fonction obtenue avec F.toFunction(...).
  • Un F.run(async function *() { ... }) déclaré inline crée une nouvelle référence à chaque appel et ne partage donc pas l'état de debounce().
  • Si une même exécution yield plusieurs fois debounce(...), seul le premier effet rencontré est pris en compte par le runner.

Voir aussi

  • throttling - Ignore ou reporte les appels trop rapprochés sans attendre le dernier appel
  • queue - Sérialise les exécutions au lieu d'annuler l'appel précédent
  • run - Exécute le flow et applique les effets de debounce

Diffusé sous licence MIT.