Um objeto promise representa o eventual sucesso ou falha de uma tarefa assincrona e o valor resultante. Os métodos then()
, catch()
e finally()
são utilizados para associar futuras ações com um dada promise. Esses métodos funcionam como o conjunto try - exception para funções assincronas.
Exemplo:
then
O método then recebe dois argumentos; o primeiro argumento é uma função callback para o caso da promisse ter sucesso, e o segundo argumento também é uma função callback para o caso de falha da promise.
const prom = new Promise((resolve, reject) => {
resolve('Success!');
});
promise.then((value) => {
console.log(value); // 'Success!''
});
catch
É similar ao then, porém possui apenas uma parâmetro para função callback ser recusada. É utilizada para tratar promises rejeitadas.
const prom = new Promise((resolve, reject) => {
throw new Error('Eita!');
});
prom.catch((error) => {
console.error(error); ;// 'Eita!'
})
finally
Assim como o finally do tratamento de exceção. É utilizada para a finalização da operação tanto em casos de sucesso como em casos de falha da promise.
function checkMail() {
return new Promise((resolve, reject) => {
if (Math.random() > 0.5) {
resolve('Mail has arrived!');
} else {
reject(new Error('Failed to arrive'));
}
});
}
checkMail()
.then((main) => {
console.log(mail);
})
.catch((err) => {
console.log(err);
})
.finally(() => {
console.log('Experiment completed');
});