Situações excepcionais em Promises em JavaScript
Agora vamos aprender a lidar com situações excepcionais que ocorrem dentro de uma Promise. Em caso de ocorrência de tal situação, devemos rejeitar a Promise usando uma função de rejeição especial, que é automaticamente passada como segundo parâmetro da função da Promise:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
...
}, 3000);
});
Dentro da função da Promise, devemos chamar
resolve se tudo ocorreu normalmente, ou
reject se ocorreu uma situação excepcional:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false;
if (!isError) {
resolve([1, 2, 3, 4, 5]); // dados da promise
} else {
reject('erro na promise'); // seu texto de erro
}
}, 3000);
});
Em seguida, no método then você deve
passar não uma, mas duas funções como parâmetros: a primeira será executada
se a Promise for resolvida com sucesso (foi resolvida),
e a segunda - se for rejeitada com erro (foi rejeitada):
promise.then(
function(result) {
console.log(result); // exibirá o resultado da promise
},
function(error) {
console.log(error); // exibirá o texto do erro
}
);
Geralmente, o código acima é escrito de forma mais compacta, assim:
promise.then(function(result) {
console.log(result); // exibirá o resultado da promise
}, function(error) {
console.log(error); // exibirá o texto do erro
});
Faça um código assíncrono que irá gerar
números aleatórios de 0 a 5.
Encapsule tudo isso em uma Promise. Deixe a Promise retornar como resultado
o resultado da divisão de um pelo número gerado.
Deixe a Promise ser rejeitada com erro
se ocorrer uma divisão por zero, e com sucesso
em todos os outros casos.