Retour au blog
Ce n'est qu'un aurevoir Lodash.

Bye Lodash

Sommaire

  1. Présentation
  2. Tutoriel vidéo
  3. Debounce
  4. Throttle
  5. Conclusion

Présentation

Lodash c’est une librairie vraiment super. Sauf que l’on a tendance ces derniers temps à ajouter des dépendances un peu trop facilement à nos projets.

On perd donc en maintenabilité et on fait de nos mises à jour un enfer.

Aujourd’hui, on met Lodash à la poubelle et on apprend à se créer soi-même nos fonctions debounce et throttle !

Tutoriel vidéo

Debounce

J’utilise un watch dans mon composant Vue.js de manière à faire un appel d’API chaque fois que l’input est mis à jour.

Cette fausse bonne idée nous apporte plus de mal que de bien : nous faisons des appels au serveur en pagaille ! Il va falloir se créer notre propre fonction debounce pour pouvoir décaler notre appel dans le temps.

De cette manière, l’appel API se fera seulement lorsque l’utilisateur a terminé d’inscrire dans l’input.

Pour ce faire, je place ceci dans mon Utils.js :

    const debounce = (callback, maxDuration) => {
    let timer;

    return (...args) => {
        clearTimeout(timer);

        timer = setTimeout(() => {
            callback.apply(this, args);
        }, maxDuration);
    }
}

Il ne me reste plus qu’à retourner la fonction qui se réinitialise toute seule dans mon composant.

watch(name, throttle((newValue, oldValue) => {
    console.log('APPEL API', newValue);
}, 2000));

Throttle

Je m’inspire maintenant de ma mouture initiale pour créer une fonction throttle qui renverra cette fois-ci une fonction qui attendra de ne plus être “bouchée” pour faire un appel API.

    const throttle = (callback, maxDuration) => {
    let throttled = false;

    return (...args) => {
        if (throttled === false) {
            callback.apply(this, args);

            throttled = true;

            setTimeout(() => throttled = false, maxDuration);
        }
    }
}

Conclusion

Vous savez maintenant comment développer 2 fonctions qui peuvent paraître impressionnantes, mais finalement pas tant que ça !

N’hésitez pas à me suivre et à vous abonner à Laravel Jutsu pour plus de contenu !