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

175
Views
JavaScript promete bloquear la ejecución del código

¿Podría alguien tratar de ayudarme a entender por qué la primera función no bloquea mientras que la segunda bloquea el resto del código? ¿No es Promise.resolve lo mismo que resolver desde una new Promise ? No puedo envolver mi cabeza alrededor de eso.

 function blockingCode() { return new Promise((resolve, reject) => { for (let i = 0; i < 2500000000; i++) { // Doing nothing... } resolve('ping'); }); } function nonBlockingCode() { return Promise.resolve().then(() => { for (let i = 0; i < 2500000000; i++) { // Doing nothing... } return 'pong'; }); } console.time('non-blocking'); nonBlockingCode().then((message) => console.log(message)); console.timeEnd('non-blocking'); // console.time('blocking'); // blockingCode().then((message) => console.log(message)); // console.timeEnd('blocking');

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

0

Las dos funciones en realidad están bloqueando.

Tienes la ilusión de que el segundo no está bloqueando porque llamar a Promise.resolve().then() agrega una ronda más al bucle de eventos, así que console.timeEnd('non-blocking'); se alcanza antes de que comience el código dentro de su promesa.

Notarás que ambas funciones se bloquean si arreglas tu código de esta manera:

 console.time('non-blocking'); nonBlockingCode() .then((message) => console.log(message)) .then(() => console.timeEnd('non-blocking'));

Tenga en cuenta que una promesa tiene la intención de no bloquearse cuando la lógica que lleva mucho tiempo dentro de la promesa se delega a un tercero, y solo espera el resultado (por ejemplo, cuando un cliente realiza una llamada a una base de datos remota, un servidor web remoto , etc.).

Si tiene dificultades con las promesas y then con la lógica, eche un vistazo a la sintaxis async/await , me parece mucho más fácil de entender.

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!