• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

151
Views
La función asincrónica personalizada en JavaScript no funciona
console.log('Start'); const myFunc = async () => { for(let i=0; i<10000000000000; i++){} console.log('After for loop'); } myFunc(); console.log('end');

Quiero un comportamiento asíncrono usando async/await. Quiero que mi función pase toda la función a un ciclo de eventos igual que SetTimeout, SetInterval lo hace para que mi subproceso principal pueda continuar haciendo el resto a menos que esa funcionalidad pesada se esté ejecutando detrás de escena.

Salida esperada: inicio, fin, después del bucle for

Salida actual: inicio, después de bucle, final

almost 3 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Su comprensión del código javascript asíncrono no es correcta.

La función que se pasa a setTimeout no se ejecuta en segundo plano : se ejecuta en el subproceso principal y mientras se ejecuta esa función, no se ejecuta nada más.

Es solo que la función de devolución de llamada de setTimeout se inserta en la pila de llamadas después de que el temporizador haya expirado y la pila de llamadas esté vacía. Esta es la razón por la que se puede ejecutar otro código antes de que se ejecute la función de devolución de llamada de setTimeout .

Algunas funciones proporcionadas por el navegador, como las solicitudes HTTP, ocurren en segundo plano y, una vez que se completan, Javascript invocará nuestra función de devolución de llamada y, una vez que esa función de devolución de llamada comience a ejecutarse, bloquea todo lo demás hasta que esa función se elimine de la pila de llamadas.

Poner su código dentro de una función async no hace que su código sea asíncrono ; se ejecutará sincrónicamente hasta la primera expresión de espera . (Las promesas no hacen que nada sea asíncrono. Son solo un mecanismo de notificación que le informa sobre la finalización exitosa o la falla de algo que ya es asíncrono).

Lo que necesita es otro subproceso que ejecute el código de ejecución prolongada sin bloquear el subproceso principal. Puede hacer esto usando un trabajador web en el navegador o un subproceso de trabajo en NodeJS.

almost 3 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 Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error