Bridage (Throttle)
Le bridage désignait à l'origine le ralentissement du débit d'un fluide au moyen d'une obstruction. En programmation, il désigne la limitation d'un processus de sorte qu'une opération ne puisse être effectuée qu'à un rythme déterminé.
Le bridage est très proche du anti-rebond. La différence essentielle est que, lorsque des appels se produisent en continu, le bridage garantit que l'opération est exécutée à une fréquence maximale donnée, tandis que l'anti-rebond attend que les appels cessent pendant une durée donnée avant d'exécuter l'opération.
Un cas d'utilisation typique du bridage intervient lors de la synchronisation avec un état qui se met continuellement à jour. Considérez une fonction onScrolled, qui écoute l'événement scroll. L'événement scroll peut se déclencher aussi souvent qu'à chaque pixel défilé, si bien que la fonction est appelée à des intervalles très courts. Si onScrolled est coûteuse en calcul, des appels précoces peuvent empêcher des appels ultérieurs d'être exécutés en temps voulu, ou bloquer d'autres opérations, entraînant un phénomène perceptible de saccade. Dans ce cas, on peut brider onScrolled pour qu'elle ne soit appelée au maximum qu'une fois toutes les 10 millisecondes :
- Le premier appel à
onScrolledcorrespond au bord d'attaque (leading edge en anglais). - Pour chaque appel suivant à
onScrolled, s'il se produit dans les 10 millisecondes suivant le premier appel, il appartient au même « lot » que le premier appel. - Après écoulement de 10 millisecondes depuis le premier appel à
onScrolled, on atteint le bord de sortie (trailing edge en anglais).
En général, onScrolled s'exécute une fois uniquement au bord d'attaque, bien que parfois elle puisse s'exécuter au bord de sortie, ou aux deux bords, selon les besoins. Si elle s'exécute aux deux bords, l'implémentation du bridage veille généralement à ce que l'appel du bord d'attaque suivant ne soit pas déclenché avant au moins 10 millisecondes après le précédent bord de sortie.
Grâce au bridage, l'effet de onScrolled reste mis à jour et appliqué en continu — par exemple, si elle déplace un autre élément du DOM en fonction de la position de défilement du document, cet élément continue d'être déplacé pendant le défilement — mais la fonction n'est pas exécutée plus souvent que nécessaire.
Bridage du réseau désigne la simulation d'une connexion réseau plus lente en autorisant seulement un certain volume de données à être transféré à la fois. Brider un minuteur signifie réduire la précision du minuteur de sorte que, lorsqu'on lit continuellement le minuteur (par exemple Date.now()), la valeur du minuteur ne change qu'à une fréquence maximale donnée. Les deux sont des applications spécifiques du concept général de bridage.
Voir aussi
- Termes du glossaire :
- Anti-rebond et bridage expliqués par des exemples (angl.) sur CSS-Tricks (6 avril 2016)