Nueva promesa

});La promesa queda pendiente durante 1 segundo, luego se cumple con el valor de cadena «¡hecho!».Cuando una promesa entra en estado cumplido o rechazado se dice que está resuelta. Formalmente se dice que la promesa está resuelta si se resuelve o se resuelve con una promesa de forma que resolverla o rechazarla más adelante no tiene ningún efecto. Si estás interesado en las definiciones formales, consulta la especificación ECMAScript y la especificación Promise/A+.Trabajar con promesasUna promesa actúa como un valor síncrono: puede pasarse como argumento o ser devuelta por funciones de la forma habitual. Sin embargo, para leer su valor final es necesario «suscribirse» a ella. Para permitirlo, las promesas tienen métodos públicos:Así es como se ve en la práctica:const promise = new Promise((resolve, reject) => {

.finally(handleResolved)Encadenando los gestores de promesas.Cada gestor handleFulfilled recibirá el resultado devuelto de llamar al gestor anterior. En caso de que se produzca un error en cualquiera de los manejadores, la promesa entrará en estado rechazado y cualquier otro manejador al que se llame será handleRejected y .catch.Nota: un error común de principiante es adjuntar múltiples manejadores a la promesa original cuando se intenta encadenar, no funcionará, pero puede ser una característica útil en algunos casos:const promise = new Promise((resolve, reject) => {

Promesa tipografiada

En las aplicaciones Node.js, no es inusual ver un gran número de funciones callback anidadas que se utilizan para realizar varias actividades. Esto se conoce comúnmente como el infierno de las callbacks, ya que puede hacer que el código sea extremadamente complicado y desorganizado.

El estado pendiente es el estado inicial que se produce cuando se llama a una promesa. Mientras una promesa está pendiente, la función que la llama continúa ejecutándose hasta que la promesa se completa, devolviendo los datos solicitados a la función que la llama.

Cuando una promesa se completa, termina en el estado resuelto o en el estado rechazado. El estado resuelto indica que la promesa ha tenido éxito y que los datos deseados se han pasado al método .then().

Las promesas se crean generalmente llamando a un constructor Promise, que acepta una única función callback como argumento. La función callback, también conocida como función ejecutora, se ejecuta inmediatamente después de crear una promesa.

La función ejecutora acepta dos funciones callback como argumentos, resolve y reject, que se denominan referencias de función. Las funciones resolve() y reject() aceptan un argumento cada una, que puede ser una cadena, un entero, un booleano, un objeto o un array.

Esperar promesa

Una promesa comienza en estado pendiente. Esto significa que el proceso no se ha completado. Si la operación tiene éxito, el proceso termina en un estado cumplido. Y, si se produce un error, el proceso termina en un estado rechazado.

Por ejemplo, cuando solicitas datos al servidor utilizando una promesa, estará en un estado pendiente. Cuando los datos lleguen con éxito, estará en un estado cumplido. Si se produce un error, estará en estado rechazado.

En el programa anterior, se crea un objeto Promise que toma dos funciones: resolve() y reject(). resolve() se utiliza si el proceso tiene éxito y reject() se utiliza cuando se produce un error en la promesa.

Promise((resolver))

Para aliviarte un poco, prometes enviárselo cuando se publique. Les das a tus fans una lista. Pueden rellenar sus direcciones de correo electrónico para que, cuando la canción esté disponible, todos los suscritos la reciban al instante. E incluso si algo sale muy mal, por ejemplo, un incendio en el estudio, de modo que no puedas publicar la canción, seguirán recibiendo la notificación.

La función que se pasa a new Promise se llama ejecutor. Cuando se crea new Promise, el ejecutor se ejecuta automáticamente. Contiene el código productor que finalmente debe producir el resultado. En términos de la analogía anterior: el ejecutor es el «cantante».

En caso de que algo vaya mal, el ejecutor debe llamar a rechazar. Eso se puede hacer con cualquier tipo de argumento (igual que con resolve). Pero se recomienda utilizar objetos Error (u objetos que hereden de Error). El razonamiento para ello pronto se hará evidente.

Consumidores: entonces, catchUn objeto Promise sirve de enlace entre el ejecutor (el «código productor» o «cantante») y las funciones consumidoras (los «fans»), que recibirán el resultado o error. Las funciones consumidoras pueden registrarse (suscribirse) mediante los métodos .then y .catch.