Skip to content

throttling

La fonction throttling() empêche plusieurs exécutions trop proches d'un même flow. Elle peut soit retourner immédiatement une valeur de repli, soit garder seulement le dernier appel avec keepLast: true.

Exemple interactif

Syntaxe

typescript
function throttling<
	GenericValue extends unknown = undefined,
	GenericKeepLast extends boolean = false
>(
	time: number,
	params?: {
		returnValue?: GenericValue;
		keepLast?: GenericKeepLast;
	}
): Generator | AsyncGenerator

Paramètres

  • time : Fenêtre de temps minimale entre deux exécutions du même flow.
  • params.returnValue : Valeur retournée quand un appel est ignoré pendant la fenêtre de throttling.
  • params.keepLast : Quand cette option vaut true, seul le dernier appel ignoré est rejoué après l'attente.

Valeur de retour

Par défaut, throttling() retourne un générateur synchrone. Avec keepLast: true, il retourne un générateur asynchrone qui attend avant de reprendre le dernier appel conservé.

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 throttling 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(function *() { ... }) déclaré inline ne partage pas cette fenêtre avec les appels suivants.
  • Si une même exécution yield plusieurs fois throttling(...), seul le premier effet rencontré est pris en compte par le runner.

Voir aussi

  • queue - Sérialise les exécutions au lieu de les ignorer
  • debounce - Attend avant de laisser continuer uniquement le dernier appel
  • calledByNext - Déclenche un callback quand une exécution suivante remplace l'actuelle
  • run - Exécute le flow et applique les effets de throttling

Diffusé sous licence MIT.