Maison > interface Web > js tutoriel > le corps du texte

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

DDD
Libérer: 2024-11-02 00:16:31
original
126 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!