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

247
Views
¿Por qué envolver su código en prop resuelto hace que su código de sincronización actúe como un código asíncrono?

El bucle dentro de la promesa funciona como un código de sincronización, por ejemplo:

 console.log('im working') function proLoop(){ return Promise((resolve ,rejects)=>{ for (let i = 0; i < 1000000000000; i++) {} console.log('loop is done') }) } proLoop(); console.log('im working')

Entonces, incluso si escribimos es como una promesa, obtendrá más tiempo y congelará nuestro código. En otras palabras, funcionará sincrónicamente.

Encontré una solución, pero ¿por qué funciona?

entonces la solución es simplemente deformar su código como una promesa resuelta

como esto

 return new Promise.resolve().then( ()=>{ for (let i = 0; i < 1000000000000; i++) {} console.log('loop is done') })

pero porque y como???

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Un par de cosas que debes entender aquí:

  1. Las promesas no hacen que algo sea asíncrono : son un mecanismo de notificación para algo que ya es asíncrono. Las promesas le notifican el éxito o el fracaso de una operación que ya es asíncrona.

    La función de devolución de llamada del constructor de la promesa se llama sincrónicamente ; se llama sincrónicamente para iniciar una operación que ya es asíncrona.

    En su caso, el constructor de promesas contiene código síncrono; es por eso que bloquea otro código.

  2. Mover el bucle dentro de la función de devolución de llamada de then ejecuta el bucle de forma asíncrona porque la función de devolución de llamada de then se invoca de forma asíncrona.

    Nota: Aunque la función de devolución de llamada del método then invoca de forma asincrónica, una vez que comienza a ejecutarse, no se ejecutará ningún otro código hasta que el código síncrono dentro de la devolución de llamada se ejecute por completo.

about 4 years ago · Juan Pablo Isaza Report

0

En ambos casos, el ciclo for bloqueará el ciclo del evento principal. La diferencia es cuando comienza el bucle for .

En el primer caso, la función pasada a new Promise se ejecuta inmediatamente . Por lo tanto, bloquea el resto de la función que lo crea.

En el segundo caso, la función pasada a then() se pone en cola para ejecutarse la próxima vez que el bucle de eventos esté libre. Por lo tanto, la función que lo creó termina primero y luego se ejecuta el bucle for . (Si ese es el objetivo, entonces es un enfoque bastante poco intuitivo, y usar setImmediate (en los navegadores) o el proceso de process.nextTick() sería más ordenado).

Si desea desviar el trabajo realizado por el ciclo for del ciclo del evento principal para que no bloquee nada, debe usar un Web Worker o un subproceso Worker según el tiempo de ejecución de JavaScript que esté usando.

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!