É possível cancelar uma Promise antes que ela seja concluída?
É possível cancelar uma Promise antes que ela seja concluída?
Olá, estudante!
Ótima pergunta! No JavaScript, não é possível cancelar uma Promise diretamente. No entanto, você pode implementar uma lógica para simular o cancelamento de uma Promise.
Uma maneira de fazer isso é criar uma variável de controle externa, que pode ser um booleano, por exemplo. Quando você desejar cancelar a Promise, você pode alterar o valor dessa variável. Dentro da função executora da Promise, você pode verificar o valor dessa variável e interromper a execução, caso ela seja verdadeira.
Aqui está um exemplo prático:
let cancelado = false;
const minhaPromise = new Promise((resolve, reject) => {
// Simulando uma operação assíncrona
setTimeout(() => {
if (cancelado) {
reject(new Error('Promise cancelada.'));
} else {
resolve('Promise concluída com sucesso!');
}
}, 2000);
});
// Cancelando a Promise após 1 segundo
setTimeout(() => {
cancelado = true;
}, 1000);
minhaPromise
.then((resultado) => {
console.log(resultado);
})
.catch((erro) => {
console.log(erro.message);
});
Nesse exemplo, a Promise será cancelada após 1 segundo. No caso de cancelamento, será lançado um erro com a mensagem "Promise cancelada.".
Espero ter ajudado e bons estudos!