Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

202
Vistas
Espere 5 segundos antes de ejecutar la siguiente línea

Esta función a continuación no funciona como yo quiero; siendo un novato de JS, no puedo entender por qué.

Necesito que espere 5 segundos antes de verificar si newState es -1 .

Actualmente, no espera, simplemente verifica de inmediato.

 function stateChange(newState) { setTimeout('', 5000); if(newState == -1) { alert('VIDEO HAS STOPPED'); } }
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Debe poner su código en la función de devolución de llamada que proporciona a setTimeout :

 function stateChange(newState) { setTimeout(function () { if (newState == -1) { alert('VIDEO HAS STOPPED'); } }, 5000); }

Cualquier otro código se ejecutará inmediatamente.

over 4 years ago · Santiago Trujillo Denunciar

0

Navegador

Aquí hay una solución que usa la nueva sintaxis async/await .

Asegúrese de comprobar la compatibilidad del navegador, ya que se trata de una función de lenguaje introducida con ECMAScript 6.

Función de utilidad:

 const delay = ms => new Promise(res => setTimeout(res, ms));

Uso:

 const yourFunction = async () => { await delay(5000); console.log("Waited 5s"); await delay(5000); console.log("Waited an additional 5s"); };

La ventaja de este enfoque es que hace que su código se vea y se comporte como código síncrono.

Nodo.js

Node.js 16 proporciona una versión integrada de setTimeout que se basa en promesas para que no tengamos que crear nuestra propia función de utilidad:

 import { setTimeout } from "timers/promises"; const yourFunction = async () => { await setTimeout(5000); console.log("Waited 5s"); await setTimeout(5000); console.log("Waited an additional 5s"); };
over 4 years ago · Santiago Trujillo Denunciar

0

Realmente no debería estar haciendo esto , el uso correcto del tiempo de espera es la herramienta adecuada para el problema del OP y cualquier otra ocasión en la que solo desee ejecutar algo después de un período de tiempo. Joseph Silber lo ha demostrado bien en su respuesta. Sin embargo, si en algún caso de no producción realmente desea colgar el hilo principal durante un período de tiempo, esto lo hará.

 function wait(ms){ var start = new Date().getTime(); var end = start; while(end < start + ms) { end = new Date().getTime(); } }

Con ejecución en la forma:

 console.log('before'); wait(7000); //7 seconds in milliseconds console.log('after');

Llegué aquí porque estaba creando un caso de prueba simple para secuenciar una combinación de operaciones asincrónicas en torno a operaciones de bloqueo de ejecución prolongada (es decir, manipulación DOM costosa) y esta es mi operación de bloqueo simulada. Se adapta bien a ese trabajo, así que pensé en publicarlo para cualquier otra persona que llegue aquí con un caso de uso similar. Aun así, está creando un objeto Date() en un bucle while, lo que podría abrumar al GC si se ejecuta el tiempo suficiente. Pero no puedo enfatizar lo suficiente, esto solo es adecuado para pruebas, para construir cualquier funcionalidad real, debe consultar la respuesta de Joseph Silber.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda