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

327
Views
Si se encuentra una Promesa vacía dentro de un ciclo while infinito, ¿por qué el ciclo while se resuelve con una Promesa pendiente?

Si hago una Promesa que nunca se cumple:

const nothingPromise = new Promise((resolve) => {});

Y luego await esa Promesa dentro de un ciclo while infinito:

async function run() { while (true) { await nothingPromise;}}

Cualquier función then() adjunta a la función no se ejecutará, pero tampoco obtengo un bucle infinito. Me sale una Promesa pendiente. En la consola de Chrome:

run().then(() => console.log('then')) Promise {<pending>}

¿Por qué se devuelve una Promesa pendiente? Tengo la sensación de que tiene algo que ver con esta parte de la especificación ECMAScript:

La operación abstracta LoopContinues toma la finalización de argumentos y labelSet y devuelve un valor booleano. Realiza los siguientes pasos cuando se le llama:

  1. Si finalización.[[Tipo]] es normal, devuelve verdadero.
  2. Si la finalización. [[Tipo]] no continúa, devuelve falso.
  3. Si finalización.[[Objetivo]] está vacío, devuelve verdadero.
  4. Si finalización.[[Target]] es un elemento de labelSet, devuelve verdadero.
  5. Falso retorno.

Pero no sé qué condición de finalización corresponde a await nothingPromise .

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

0

await envía la función en la que se encuentra a dormir hasta que:

  • La promesa resuelve y
  • El bucle del evento principal es gratuito.

Así que comienza el ciclo while , se await la promesa y la función que llama a run() recibe la promesa devuelta por run (que está pendiente porque run está inactiva) y continúa.


Dado que nothingPromise nunca se resuelve, la función de run nunca se activa, por lo que nunca se completa y nunca resuelve la promesa que devuelve.


La parte de la especificación que encontró es irrelevante ya que await envía run a dormir en medio de la primera iteración del ciclo, por lo que el ciclo nunca llega a completarse.

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!