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 | AsyncGeneratorParamè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 vauttrue, 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
WeakMapdont 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 avecF.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 ignorerdebounce- Attend avant de laisser continuer uniquement le dernier appelcalledByNext- Déclenche un callback quand une exécution suivante remplace l'actuellerun- Exécute le flow et applique les effets de throttling
