2) Lidar com promises.
Em JavaScript, as Promises são uma forma de lidar com operações assíncronas de uma maneira mais simples e elegante. Em vez de usar callbacks aninhados, as Promises permitem encadear operações e lidar com erros de uma forma mais clara e legível. Para criar uma Promise, você pode utilizar a classe Promise. O construtor dessa classe recebe uma função com dois parâmetros: resolve e reject. A função representa a operação assíncrona que será realizada. O parâmetro resolve é uma função que deve ser chamada quando a operação for bem sucedida e o parâmetro reject é uma função que deve ser chamada quando a operação falhar. Por exemplo, vamos supor que você queira criar uma Promise que retorne um número aleatório após um certo tempo. Você pode fazer isso da seguinte maneira:
function gerarNumeroAleatorio() { return new Promise((resolve, reject) => { setTimeout(() => { const numero = Math.random(); if (numero >= 0.5) { resolve(numero); } else { reject(new Error('Número menor que 0.5')); } }, 1000); }); } Nesse exemplo, a função gerarNumeroAleatorio retorna uma Promise que espera 1 segundo (1000 milissegundos) e, em seguida, retorna um número aleatório maior ou igual a 0.5. Se o número gerado for menor que 0.5, a Promise é rejeitada com uma mensagem de erro. Para utilizar a Promise, você pode chamar o método then para lidar com o resultado da Promise quando ela for resolvida e o método catch para lidar com erros quando a Promise for rejeitada. Por exemplo:
gerarNumeroAleatorio()
.then((numero) => {
console.log(Número gerado: ${numero}
);
})
.catch((erro) => {
console.error(Erro ao gerar número: ${erro.message}
);
});
Nesse exemplo, o método then recebe o número gerado pela Promise e o exibe no console. Se ocorrer algum erro, o método catch recebe o objeto de erro e o exibe no console. Além disso, é possível utilizar o método finally para executar uma ação quando a Promise for resolvida ou rejeitada, independentemente do resultado. Por exemplo:
gerarNumeroAleatorio()
.then((numero) => {
console.log(Número gerado: ${numero}
);
})
.catch((erro) => {
console.error(Erro ao gerar número: ${erro.message}
);
})
.finally(() => {
console.log('Fim da operação');
});
Nesse exemplo, o método finally é executado após o método then ou o método catch, exibindo a mensagem 'Fim da operação' no console.