Soy nuevo en JavaScript y estoy aprendiendo sobre Promises. Tengo algunos problemas para saber cuándo querrías crear tu propia Promesa. Inicialmente, tenía la impresión de que la API del navegador manejaba de forma asíncrona la "función ejecutora" (la función que pasa al constructor Promise) (si su JavaScript se ejecuta en un navegador). Con esa comprensión, podría, por ejemplo, usar su Promesa creada para realizar un cálculo de larga duración de forma asíncrona en segundo plano.
Sin embargo, aprendí que la función ejecutora en realidad se ejecuta sincrónicamente tan pronto como se crea la Promesa (bloqueando así el hilo principal de ejecución si tiene un código de ejecución prolongado en esa función ejecutora). Así que ahora me pregunto en qué casos querrías definir tus propias Promesas. Tengo entendido que muchas de las funciones asincrónicas como buscar, por ejemplo, ya devuelven promesas y, por lo tanto, sería redundante envolver esas funciones en una promesa.
¿Puede alguien darme un ejemplo de cuándo le gustaría crear su propia Promesa? Lo siento si esta es una pregunta tonta o si no entiendo bien, sigo aprendiendo.
¡Gracias por adelantado!
Tengo entendido que muchas de las funciones asincrónicas como
fetch, por ejemplo, ya devuelven promesas
En realidad, la mayoría no. setTimeout , addEventListener , etc.: todos reciben una devolución de llamada y deben prometerse cuando desea usar una promesa.
La tendencia a las funciones nativas que ya devuelven promesas aún es reciente, solo las nuevas API como fetch hacen esto. Para las bibliotecas, el panorama es similar: las bibliotecas modernas son prometedoras, pero las antiguas aún existen.
Aparte de eso, tiene razón: rara vez necesita una new Promise , en el código normal todo lo que hará es prometer el encadenamiento (o incluso usar async / await ). Sin embargo, new Promise sigue siendo el bloque de construcción primitivo que subyace a todas estas abstracciones, y no desaparecerá.