Avez-vous déjà visité un site Web, tapé dans une barre de recherche et remarqué comment les suggestions apparaissent en temps réel sans provoquer de décalage ? Ou peut-être avez-vous rempli un formulaire et vu le message « Nom d'utilisateur déjà pris » apparaître au moment où vous tapez. Derrière ces expériences fluides se cache un héros puissant et souvent méconnu du développement Web moderne : l'anti-rebond.
L'anti-rebond est une technique de programmation qui garantit qu'une fonction n'est exécutée qu'après une période d'inactivité spécifiée. Imaginez que vous tapez dans une barre de recherche. Sans rebond, chaque frappe déclencherait un appel de fonction, submergeant potentiellement le système de requêtes redondantes. L'anti-rebond résout ce problème en attendant une pause dans votre saisie avant d'exécuter la fonction, garantissant qu'une seule requête est envoyée.
À la base, il s’agit de contrôler la fréquence d’exécution des fonctions. Mais pour une meilleure compréhension, prenons l’exemple d’une sonnette de porte. Supposons qu'il y ait une bière à la porte qui sonne après 3 secondes d'inactivité. Après la sonnerie initiale, si l'utilisateur essaie de sonner la cloche autant de fois, elle ne sonnera pas à moins qu'il ne décide de passer encore 3 secondes.
En JavaScript, l'anti-rebond est couramment utilisé avec les écouteurs d'événements tels que la saisie, le défilement ou le redimensionnement. Voici une implémentation de base :
function debounce(callback, delay) { let timeoutId; return (...args) => { clearTimeout(timeoutId); timeoutId = setTimeout(() => { callback(...args); }, delay); }; }
Permet de comprendre les différents éléments de ce code :
function debounce(callback, delay) { let timeoutId; return (...args) => { clearTimeout(timeoutId); timeoutId = setTimeout(() => { callback(...args); }, delay); }; }
const handleSearch = debounce((query) => { fetch(`https://api.example.com/search?q=${query}`) .then((response) => response.json()) .then((data) => console.log(data)); }, 500); document.getElementById("search").addEventListener("input", (e) => { handleSearch(e.target.value); });
.
.
.
.
.
Ouvert aux suggestions
Vous avez des idées ou des conseils supplémentaires pour améliorer ce blog ? N'hésitez pas à partager vos retours ! Votre contribution est inestimable pour améliorer le contenu futur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!