Estados de una promesa en JavaScript
Una promesa puede estar en uno de tres estados. Al crearse, la promesa está pendiente (pending), y luego puede volverse cumplida (fulfilled), devolviendo el resultado obtenido, o rechazada (rejected), devolviendo la razón del fallo. Puedes ver la transición de un estado a otro ejecutando el siguiente código:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false; // establezca true o false
if (!isError) {
resolve([1, 2, 3, 4, 5]);
} else {
reject('error in promise');
}
}, 3000);
});
setInterval(function() {
console.log(promise); // cada segundo mostramos la promesa en la consola
}, 1000);
Ten en cuenta que los estados fulfilled y rejected son inmutables: si una promesa pasó a uno de estos estados, ya no podrá pasar al otro. Veamos un ejemplo. En el siguiente código, la llamada reject ocurrirá antes, por lo que la llamada resolve será ignorada:
let promise = new Promise(function(resolve, reject) {
setTimeout(() => reject(new Error('error')), 1000);
setTimeout(() => resolve('ignored'), 2000);
});
Crea una promesa que se cumpla con éxito después de un tiempo. Muéstrala en la consola y estudia su estado inicial y su estado final.
Crea una promesa que falle después de un tiempo. Muéstrala en la consola y estudia su estado inicial y su estado final.