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;
}
): AsyncGeneratorParamè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
WeakMapdont 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 avecF.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 dedebounce(). - 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 appelqueue- Sérialise les exécutions au lieu d'annuler l'appel précédentrun- Exécute le flow et applique les effets de debounce
