Une pause dans l'exécution : implémentation d'une attente de 5 secondes
Dans votre code JavaScript, vous rencontrez un problème avec le timing de une certaine fonction. Votre objectif est de retarder l'exécution d'un bloc de code de 5 secondes avant d'évaluer une condition.
Le code que vous avez fourni :
<code class="js">function stateChange(newState) { setTimeout('', 5000); if(newState == -1) { alert('VIDEO HAS STOPPED'); } }</code>
n'obtient pas le comportement souhaité car le setTimeout la fonction ne retarde pas réellement l’exécution de l’instruction if. Au lieu de cela, il planifie l'exécution d'une fonction de rappel après 5 000 millisecondes, mais l'instruction if est exécutée immédiatement.
Pour résoudre ce problème, vous pouvez exploiter des techniques de programmation asynchrone en JavaScript, qui permettent de suspendre le flux d'exécution et reprenez-le plus tard. Voici deux approches qui peuvent répondre à votre besoin :
Solution basée sur un navigateur
<code class="js">const delay = ms => new Promise(res => setTimeout(res, ms)); async function stateChange(newState) { await delay(5000); console.log("Waited 5s before checking condition"); if (newState == -1) { alert('VIDEO HAS STOPPED'); } }</code>
Dans cette solution, nous définissons une fonction utilitaire appelée delay qui crée une promesse qui se résout après le nombre spécifié de millisecondes. Le mot-clé async est utilisé pour rendre la fonction stateChange asynchrone, lui permettant de suspendre l'exécution jusqu'à ce que la promesse soit résolue.
Solution Node.js
<code class="js">const { setTimeout } = require("timers/promises"); async function stateChange(newState) { await setTimeout(5000); console.log("Waited 5s before checking condition"); if (newState == -1) { alert('VIDEO HAS STOPPED'); } }</code>
Cette solution utilise Fonction setTimeout intégrée de Node.js qui renvoie une promesse, vous permettant de suspendre l'exécution jusqu'à ce que la promesse soit résolue. Le mot-clé async est utilisé comme dans l'exemple précédent.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!