1
resposta

[Dúvida] Promise

É possível cancelar uma Promise antes que ela seja concluída?

1 resposta

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!