Maison >interface Web >js tutoriel >Comment puis-je retarder l'exécution du code de 5 secondes après avoir défini un délai d'attente ?

Comment puis-je retarder l'exécution du code de 5 secondes après avoir défini un délai d'attente ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-26 03:26:27326parcourir

How Can I Delay Code Execution for 5 Seconds After Setting a Timeout?

Différer l'exécution du code de 5 secondes

Le code fourni tente de retarder l'exécution d'une opération de 5 secondes à l'aide de la fonction setTimeout :

<code class="javascript">function stateChange(newState) {
  setTimeout('', 5000);

  if(newState == -1) {
    alert('VIDEO HAS STOPPED');
  }
}</code>

Cependant, le code vérifie immédiatement la condition newState == -1 après avoir planifié le délai d'attente, annulant ainsi le délai prévu.

Solution Navigateur/Node.js

Une solution appropriée implique l'utilisation d'un système asynchrone. techniques de programmation pour différer l’exécution de l’instruction if jusqu’à ce que 5 secondes se soient écoulées. Pour les navigateurs, vous pouvez utiliser la syntaxe async/await :

<code class="javascript">// Utility function
const delay = ms => new Promise(res => setTimeout(res, ms));

// Function to wait 5 seconds before checking newState
const stateChange = async (newState) => {
  await delay(5000);
  if (newState == -1) {
    alert('VIDEO HAS STOPPED');
  }
};</code>

Pour Node.js 16 et supérieur, vous pouvez profiter du setTimeout intégré basé sur la promesse :

<code class="javascript">import { setTimeout } from "timers/promises";

const stateChange = async (newState) => {
  await setTimeout(5000);
  if (newState == -1) {
    alert('VIDEO HAS STOPPED');
  }
};</code>

N'oubliez pas de vérifier la prise en charge du navigateur pour la version async/await et Node.js pour le setTimeout intégré basé sur la promesse.

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