Fonctions de rappel
La tasse est un paragraphe, #cup, et elle commence par blank. Pas de minuteur de bouilloire sur cette page.
serve prend une commande et une fonction. Cette fonction est le rappel : tu la remets, et serve l’appelle. L’appel a lieu avant le retour de serve, donc la ligne suivante voit déjà la boisson. La ligne devient lida tea / poured.
Pas la bouilloire
La page précédente a journalisé cold tout de suite et hot seulement après 400 millisecondes. Sa ligne était cold / hot / 3. Un minuteur attend. serve n’attend pas. Si tu cherches setTimeout, ce comptoir n’est pas le bon.
La question : qui appelle la fonction que tu as remise ?
Le nom du paramètre n’est qu’un nom
Dans serve, le paramètre s’appelle done. À l’appel, la fonction n’a pas de nom. serve se moque du nom. Il lui importe d’avoir reçu une fonction et de l’appeler avec un argument : la commande plus le mot tea.
L’appel a lieu avant le retour
done(order + " tea") s’exécute, la tasse se remplit, et seulement alors serve finit. Le journal sous l’appel est déjà la boisson.
function serve(order, done) {
done(order + " tea");
}
let cup = document.getElementById("cup");
serve("lida", function (drink) {
cup.textContent = drink;
});
console.log(cup.textContent);
Le journal est lida tea. La tasse n’est pas restée blank, et rien n’a attendu.
Oublier l’appel
Ce serve construit la boisson puis s’arrête. Il n’appelle pas done. La fonction que tu as remise reste là. La tasse a été mise à blank avant l’appel et le reste.
function serve(order, done) {
order = order + " tea";
}
let cup = document.getElementById("cup");
cup.textContent = "blank";
serve("lida", function (drink) {
cup.textContent = drink;
});
console.log(cup.textContent);
Le journal est blank. Aucune erreur n’est levée. Un rappel qui n’est jamais appelé ne s’exécute pas. La chaîne de la boisson a été construite et personne ne l’a reçue.
Une seconde fonction, après la première
serve peut prendre deux fonctions. Il appelle d’abord done avec la boisson. Il n’appelle after qu’une fois cet appel revenu. after ne reçoit pas la boisson. Il marque seulement que le service a eu lieu.
function serve(order, done, after) {
done(order + " tea");
after();
}
let seen = [];
serve(
"lida",
function (drink) {
seen.push(drink);
},
function () {
seen.push("poured");
}
);
console.log(seen.join(" / "));
Le journal est lida tea / poured. Échange les deux appels dans serve et les mots s’échangent. L’ordre est celui des appels, pas celui dans lequel tu as écrit les expressions de fonction.
Ce que la page joint
La page utilise le second serve, celui avec done et after. Elle pousse la boisson, puis poured, et écrit la ligne. Aucun délai entre les deux.
La ligne sous la tasse
Le script est à la fin de body. serve appelle les deux fonctions avant la jointure.
<!DOCTYPE html>
<html>
<head>
<title>serve-cup — page</title>
</head>
<body>
<p id="cup">blank</p>
<p id="line">…</p>
<script>
function serve(order, done, after) {
done(order + " tea");
after();
}
let seen = [];
serve(
"lida",
function (drink) {
seen.push(drink);
},
function () {
seen.push("poured");
}
);
document.getElementById("line").textContent = seen.join(" / ");
document.getElementById("cup").textContent = seen[0];
</script>
</body>
</html>
La ligne est lida tea / poured. La tasse montre lida tea. Le mot blank a disparu. cold / hot / 3 est la page précédente.
Au comptoir
- Remets une fonction à
serveet laisse-le l’appeler avec la boisson. Le journal est lida tea. - Utilise un
servequi n’appelle jamaisdone. Le journal reste blank. - Remets
doneetafter. Le journal est lida tea / poured. - Lis la ligne de la page : lida tea / poured.
Ratés au comptoir
La tasse montre une boisson ou reste blank. Elle ne montre pas un compte d’intervalle.
- Attendre que le journal sous
servesoit encore blank alors quedonea été appelé - Croire qu’un rappel s’exécute même si
servene l’appelle jamais - Attendre 400 millisecondes pour lida tea
- Mettre poured avant la boisson en appelant
afterd’abord - Lire la ligne comme cold / hot / 3
À retenir
- Un rappel est une fonction que tu remets pour qu’un autre l’appelle
serveappelledoneavant de revenir, donc la ligne suivante voit déjà lida tea- Si
donen’est jamais appelé, la tasse reste blank et aucune erreur n’est levée afterne s’exécute qu’après le retour dedone- La ligne de la page est lida tea / poured
🧠 Testez Vos Connaissances
Testez Vos Connaissances
Mettez-vous au défi avec ce quiz interactif et voyez à quel point vous comprenez le sujet
📝 Instructions
- Lisez chaque question attentivement
- Sélectionnez la meilleure réponse pour chaque question
- Vous pouvez refaire le quiz autant de fois que vous le souhaitez
- Votre progression sera affichée en haut