Promises


Promises, ou promessas, definem uma ação que vai ser executada no futuro, e que podem ser resolvida (com sucesso) ou rejeitada (com erro).

Para criarmos uma Promise é muito simples, basta inicializar um new Promise, que recebe uma função como argumento. Essa função tem a assinatura (resolve, reject) => {}, e podemos realizar nossas tarefas assíncronas no corpo dela. Quando queremos retornar o resultado final chamamos a função resolve(resultado), e quando queremos retornar um erro, chamamos reject(erro).

Uma Promise pode assumir três estados principais:

  1. Pending: o estado inicial da Promise, ela foi iniciada mas ainda não foi realizada nem rejeitada;
  2. Fulfilled: sucesso da operação, é o que chamamos de uma Promise realizada/resolvida (ou, em inglês, resolved);
  3. Rejected: falha da operação, é o que chamamos de uma Promise rejeitada (em inglês, rejected).

Uma Promise que está pendente (pending) pode vir a se tornar uma Promise resolvida com um valor, ou então rejeitada por um motivo (que é o erro). Sempre que qualquer um dos dois casos acontecer, o método then() da Promise será chamado e ele será o responsável por verificar se houve um erro ou um sucesso, chamando o método resolve() em caso de sucesso, ou reject() em caso de falha.

Veja um exemplo do uso de Promises abaixo:

var promessa = new Promise((resolve, reject) => {
    setTimeout(() => resolve('terminou!'), 2000);
});

promessa
    .then((resultado) => console.log(resultado))
    .catch((erro) => console.log('deu erro!')); 

Versão 5.3 - Todos os Direitos reservados