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 ?
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.
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!