Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

120
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!