Maison > interface Web > js tutoriel > Anti-rebond en JS : créer de meilleures applications Web

Anti-rebond en JS : créer de meilleures applications Web

Susan Sarandon
Libérer: 2024-12-06 19:56:11
original
321 Les gens l'ont consulté

Debouncing in JS: Building better web apps

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.

Qu’est-ce que 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.

Comment ça marche ?

À 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);
  };
}
Copier après la connexion
Copier après la connexion

Permet de comprendre les différents éléments de ce code :

  • anti-rebond : la fonction principale qui crée et renvoie une version anti-rebond d'une fonction donnée.
  • rappel : la fonction à exécuter après le délai anti-rebond.
  • délai : la durée (en millisecondes) pendant laquelle la fonction doit attendre après le dernier événement avant d'exécuter le rappel.
  • timeoutId est défini pour contenir l'identifiant du minuteur créé par setTimeout. Cela nous permet d'effacer toute minuterie en cours avant d'en démarrer une nouvelle, évitant ainsi les exécutions de fonctions inutiles ou répétées.
  • clearTimeout annule toute minuterie existante associée à timeoutId.

Cas d'utilisation pratiques

  • Champs de saisie de recherche : La recherche en direct est un cas d’utilisation classique pour l’anti-rebond. Sans cela, chaque frappe pourrait déclencher une requête dans la base de données, submergeant ainsi le serveur. Avec l'anti-rebond, la fonction n'est appelée qu'une fois que l'utilisateur a arrêté de taper, ce qui réduit la charge du serveur et améliore les performances.
function debounce(callback, delay) {
  let timeoutId;
  return (...args) => {
    clearTimeout(timeoutId);
    timeoutId = setTimeout(() => {
      callback(...args);
    }, delay);
  };
}
Copier après la connexion
Copier après la connexion
  • Validation du formulaire : Les commentaires instantanés sur les formulaires sont formidables, mais la validation des entrées à chaque frappe peut nécessiter beaucoup de ressources. L'anti-rebond vous permet de retarder la validation jusqu'à ce que l'utilisateur arrête de taper.
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);
});
Copier après la connexion

Avantages du rebond

  • Optimisation des performances : réduit le nombre d'appels de fonction, évitant ainsi les calculs inutiles ou les requêtes réseau.
  • Expérience utilisateur améliorée : offre des interactions plus fluides, plus rapides et plus réactives.
  • Efficacité des ressources : réduit la charge du serveur et préserve les ressources côté client, ce qui est particulièrement important dans les applications à grande échelle.

.
.
.
.
.
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!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal