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

217
Views
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 answers
Answer question

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 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!