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

130
Vistas
JavaScript: ¿qué tipo de funciones podemos crear para que se ejecuten de forma asíncrona?

Estoy tratando de entender cómo funcionan las funciones asíncronas en JavaScript y cómo escribirlas, pero me parece que la forma en que el lenguaje maneja las funciones asíncronas es bastante limitada, pero puedo estar equivocado y, probablemente, no lo entendí.

Uso Visual Studio Code (v. 1.66.2) y Chrome (v 100.0.4896.88) en Windows 10 X64.

Solo con fines experimentales, escribí una función heavyLoad() simple que obtiene un parámetro de retraso (que representa un valor de milisegundos) y devuelve true después de que transcurre el tiempo:

 function heavyLoad(delay) { let startTime = (new Date()).getTime(); while(new Date().getTime() < startTime + delay); return true; }

Si escribo:

 heavyLoad(5000); console.log(“Hello”);

la función console.log() se ejecuta, obviamente, después de 5 segundos, ya que tengo que esperar a que finalice la función heavyLoad() .

Estoy tratando de hacer que la función heavyLoad() sea asíncrona para poder leer, en la consola del navegador, Hola inmediatamente sin esperar la función heavyLoad() pero no puedo hacerlo: he intentado crear una promesa objeto; Traté de usar la palabra clave async pero nada funciona, ya que siempre tengo que esperar a que termine la función heavyLoad() antes de leer Hello .

¿Es posible hacer que heavyLoad() funcione, esencialmente tal como es, asíncrono como quise decir?

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Puedes usar WebWorker y Promise

Escriba su script de carga pesada en un archivo separado.

trabajador.js

 onmessage = function(e) { let startTime = (new Date()).getTime(); while(new Date().getTime() < startTime + e.data); postMessage(true); }

Ejecute ese webWorker en el archivo de script principal.

principal.js

 function heavyLoad(delay) { return new Promise((resolve, reject) => { var myWorker = new Worker('worker.js'); myWorker.postMessage(delay); myWorker.addEventListener('message', function(e) { // Log the workers message. resolve(e.data); }, { once: true }); }) } console.log("Starting") console.time() heavyLoad(5000).then(data=>{ console.timeEnd() }) console.log("end")

(Aquí estoy usando el método console.time para realizar un seguimiento del tiempo de ejecución)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Para el tiempo de espera, existe el método setTimeout() en javascript.

Así que simplemente puedes usar:

 setTimeout(() => { console.log("Hello"); }, 5000);
about 4 years ago · Juan Pablo Isaza Denunciar

0

Intente seguir el código para comprender el trabajo asíncrono

 function heavyLoad(delay) { return new Promise((resolve, reject)=>{ setTimeout(()=>{ resolve(true) },delay) }) } heavyLoad(5000).then(value=>{ console.log(value) }); console.log("Hello");

Primero imprimirá hello cuando ejecute el código y true después de 5 segundos.

about 4 years ago · Juan Pablo Isaza 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