Antiréflexion de Fonction

Langage:
JavaScript
42 vues
0 favoris
2025年9月19日

Implémentation du Code

JavaScript
function debounce(fn,delay){
    let timerId;
    return function(...args){
        clearTimeout(timerId);
        timerId=setTimeout(()=>{
            fn.apply(this,args);
        },delay);
    };
}

//usage
const d_layout = debounce(layout,500);
window.onresize = d_layout;

En JavaScript, la fonction d'antiréflexion est un outil clé pour optimiser les opérations haute fréquence et chronophages. Sa logique centrale repose sur le retard de l'exécution de la fonction et l'annulation des retards répétés. Cela garantit qu'une fonction déclenchée plusieurs fois en peu de temps ne s'exécutera qu'après avoir attendu un délai spécifié suivant le dernier déclenchement, évitant ainsi la perte de performance causée par des appels inutiles.

Son principe de fonctionnement peut être compris à travers l'analogie du "fermeture des portes d'un ascenseur" : Après avoir ouvert ses portes, un ascenseur attend par défaut une période fixe (par exemple, 2 secondes) avant de les fermer. Si un nouveau passager entre pendant cette attente (ce qui correspond à un nouveau déclenchement de la fonction), le minuteur d'attente initial est annulé et le compte à rebours redémarre. Seule l'absence de nouveau déclenchement après la fin du compte à rebours déclenche l'action de "fermer les portes" (correspondant à l'exécution de la fonction).

#Antiréflexion de Fonction

Description de l'Extrait

Scénarios Applicables

  • Déclenchement haute fréquence : La fonction est appelée répétitivement en peu de temps (par exemple, événements resize de la fenêtre, événements input des champs de saisie). Ceci n'est pas limité aux événements DOM, mais s'applique également aux appels de fonctions haute fréquence dans des environnements non DOM (tels que Node.js).
  • Fonctions chronophages : La fonction appelée est soit CPU-intensive (par exemple, calculs de mise en page, opérations DOM extensives causant des reflux/redessins), soit E/S-intensive (par exemple, requêtes réseau, lecture/écriture de fichiers). Les opérations simples (comme le calcul 1+1) n'ont pas besoin d'antiréflexion.
  • Priorité au résultat final : Parmi les résultats de multiples appels en peu de temps, seul le résultat du dernier appel doit être conservé. Par exemple, après avoir ajusté la taille de la fenêtre, seule la mise en page correspondant à la taille finale est nécessaire ; les mises en page générées pendant le processus d'ajustement sont inutiles.

Commentaires

Chargement...