Maison  >  Article  >  interface Web  >  Comment suspendre l'exécution de JavaScript pendant 5 secondes avant d'évaluer une condition ?

Comment suspendre l'exécution de JavaScript pendant 5 secondes avant d'évaluer une condition ?

DDD
DDDoriginal
2024-11-02 00:16:31127parcourir

How to Pause JavaScript Execution for 5 Seconds Before Evaluating a Condition?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn