Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

220
Vistas
Especificaciones sobre la evaluación entusiasta de las devoluciones de llamadas de Promise

¿Hay algún detalle de especificación/implementación sobre qué tan "ansiosa" es la evaluación de las devoluciones de llamada de una promesa? Quiero decir, digamos que tengo

 var promise = new Promise((resolve) => { resolve() }); console.log(promise); // there is no public field '<state>', but you can see it in the console of the dev tools

Veo que la promise ya se cumplió; Esperaba que la implementación interna de Promise llamara a la devolución de llamada de resolve en un momento posterior, dejando una "ventana de tiempo" con la promise aún sin cumplir.

¿Es esta evaluación "ansiosa" de la devolución de llamada de resolve "por diseño"? ¿Es esto solo un detalle de implementación?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La devolución de llamada que se pasa al constructor de Promise se ejecuta sincrónicamente por ese constructor. Entonces, cuando el operador new devuelve el objeto construido, la devolución de llamada ya se ha ejecutado.

Esto es por la especificación ECMA Script . El procedimiento para new Promise(excecutor) describe en el paso 9 que se llama al ejecutor y en el paso 11 que se devuelve el objeto de promesa construido.

Los colaboradores de Mozilla escriben :

Sintaxis

 new Promise(executor)

Parámetros

 executor

Una función que ejecutará el constructor, durante el proceso de construcción del nuevo objeto Promise .

La función de devolución de llamada del constructor generalmente se usa para iniciar un proceso asíncrono (basándose en una API asíncrona, como setTimeout ), que puede resolver la promesa en el momento en que la devolución de llamada del constructor ya ha regresado.

 function executor(resolve) { setTimeout(resolve, 100); } var promise = new Promise(executor);

En su ejemplo, esa devolución de llamada no se basa en una API asíncrona, sino que llama sincrónicamente a la devolución de llamada de resolve . Eso significa que cuando el objeto de promesa construido se asigna a su variable de promise , esa promesa ya se encuentra en un estado cumplido.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda