Il s'agit d'un code écrit sur un débutant
setTimeout, peu importe la durée pendant laquelle il est défini, innerHtml affichera directement le résultat final
Pourquoi est-ce
<!DOCTYPE html>
< ;html> ; ;
<head>
<meta charset="utf-8">
<title>Tutoriel Rookie (runoob.com)</title>
</head>
< body>
Le document ajoute un gestionnaire d'événements onmousemove, qui affichera des nombres aléatoires lorsque la souris est déplacée dans le document.
Cliquez sur le bouton pour supprimer le gestionnaire d'événements.
<button id='demo1'>cliquez sur moi</button>
<p id="demo">
<script>
document.getElementById("demo1") addEventListener. ("click", maFonction);
var time = 5;
function maFonction() {
document.getElementById("demo").innerHTML = time;
removeHandler(time);
}
function removeHandler(i) {
i--;
document.getElementById("demo").innerHTML = i;
setTimeout(removeHandler(i),1000);
}
</script>
</body>
</html>
La fonction de rappel de setTime() est exécutée de manière asynchrone. Ce n'est que lorsque la pile d'appels principale est effacée qu'elle entrera dans la pile d'appels à partir de la file d'attente des tâches, donc la situation que vous avez mentionnée se produira