Chargement...

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.

Remettre une fonction

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

Ne pas appeler done

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

done, puis after

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

Démo de la page — la tasse

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

  1. Remets une fonction à serve et laisse-le l’appeler avec la boisson. Le journal est lida tea.
  2. Utilise un serve qui n’appelle jamais done. Le journal reste blank.
  3. Remets done et after. Le journal est lida tea / poured.
  4. 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 serve soit encore blank alors que done a été appelé
  • Croire qu’un rappel s’exécute même si serve ne l’appelle jamais
  • Attendre 400 millisecondes pour lida tea
  • Mettre poured avant la boisson en appelant after d’abord
  • Lire la ligne comme cold / hot / 3

À retenir

  • Un rappel est une fonction que tu remets pour qu’un autre l’appelle
  • serve appelle done avant de revenir, donc la ligne suivante voit déjà lida tea
  • Si done n’est jamais appelé, la tasse reste blank et aucune erreur n’est levée
  • after ne s’exécute qu’après le retour de done
  • La ligne de la page est lida tea / poured

🧠 Testez Vos Connaissances

Prêt à Commencer

Testez Vos Connaissances

Mettez-vous au défi avec ce quiz interactif et voyez à quel point vous comprenez le sujet

❓
6
Questions
🎯
70%
Pour Réussir
♾️
∞
Temps
🔄
∞
Tentatives

📝 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