Formation PUB040 : JavaScript et autres bibliothèques côté client, 2020 Les fonctions de rappel

10.1 Passer un paramètre à une fonction de rappel (bind)


Une fonction de rappel (en anglais callback function ou high-order function) est une fonction qui est passée en paramètre à une autre fonction. C'est cette autre fonction qui se chargera d'appeler la fonction de rappel.

Par exemple, le code suivant appelle la fonction de rappel afficherPopup() lorsque l'usager clique sur une division.

JavaScript

let case = document.getElementById('une-case');


if (case != null) {
    case.addEventListener('click', afficherPopup);
}

Remarquez qu'il n'y a pas de parenthèses après le nom de la fonction de rappel puisqu'on ne veut pas l'exécuter immédiatement.

Dans ce contexte, il n'est pas possible de spécifier directement quels paramètres la fonction de rappel recevra. Mais comment faire pour spécifier le message à afficher avec notre fonction maison afficherPopup() ?

JavaScript

// fonction de rappel
function afficherPopup(message) {
    ...
}

bind()

La méthode bind() permet de régler ce problème.

Elle attend toujours au moins un paramètre : une référence à l'objet qui portera le nom this dans la fonction de rappel. Si la fonction de rappel n'en a pas besoin, vous pouvez passer la valeur null.

Il est possible de lui passer ensuite autant de paramètres que désiré. Ces paramètres seront passés directement à la fonction de rappel.

JavaScript

case.addEventListener('click', afficherPopup.bind(this, 'Voici la valeur passée en paramètre'));

Autre exemple

La méthode bind() peut être utilisée dans d'autres contextes que addEventListener(), en autant qu'une fonction de rappel soit utilisée.

Voici un exemple où elle est utile. 

JavaScript

// fonction qui fait appel à une fonction callback

function faireQuelqueChose(callback) {

    // fait quelque chose

    if (...) {

        callback(); // exécute la fonction de rappel

    }

}

 

// fonction de rappel

function fonctionAvecParametres(unParametre, unAutreParametre) {

   // fait quelque chose

}

 

// appel

let callback = fonctionAvecParametres.bind(null, "A", "B");
faireQuelqueChose(callback);

Pour plus d'information

« Understand JavaScript Callback Functions and Use Them ». JavaScript is sexy. https://javascriptissexy.com/understand-javascript-callback-functions-and-use-them/

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre