Estados de uma Promise em JavaScript
Uma Promise pode estar em um de três estados. Ao ser criada, a Promise fica no estado pendente (pending), e então pode se tornar realizada (fulfilled), retornando um resultado de sucesso, ou rejeitada (rejected), retornando um motivo de falha. Você pode observar a transição de um estado para outro executando o seguinte código:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false; // defina como true ou false
if (!isError) {
resolve([1, 2, 3, 4, 5]);
} else {
reject('erro na promise');
}
}, 3000);
});
setInterval(function() {
console.log(promise); // a cada segundo mostramos a promise no console
}, 1000);
Lembre-se que os estados fulfilled e rejected são imutáveis: se uma Promise mudou para um desses estados, ela não poderá mais mudar para o outro. Vamos ver um exemplo. No código a seguir, a chamada reject acontecerá primeiro, portanto a chamada resolve será ignorada:
let promise = new Promise(function(resolve, reject) {
setTimeout(() => reject(new Error('erro')), 1000);
setTimeout(() => resolve('ignorado'), 2000);
});
Crie uma Promise que será realizada com sucesso após algum tempo. Exiba-a no console e estude seu estado inicial e seu estado final.
Crie uma Promise que será rejeitada com uma falha após algum tempo. Exiba-a no console e estude seu estado inicial e seu estado final.