// Base de dados simulada (lista de tarefas)
let tarefas = ["Estudar JavaScript", "Fazer compras"];

// 1. Função para ADICIONAR tarefa (retorna Promise)
function adicionarTarefa(novaTarefa) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      if (novaTarefa && novaTarefa.trim() !== "") {
        tarefas.push(novaTarefa);
        resolve(`Tarefa "${novaTarefa}" adicionada com sucesso!`);
      } else {
        reject("Erro: A tarefa não pode ser vazia.");
      }
    }, 1500); // Simula demora de 1.5 segundos
  });
}

// 2. Função para REMOVER tarefa (retorna Promise)
function removerTarefa(tarefaParaRemover) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      const index = tarefas.indexOf(tarefaParaRemover);
      if (index !== -1) {
        tarefas.splice(index, 1);
        resolve(`Tarefa "${tarefaParaRemover}" removida com sucesso!`);
      } else {
        reject(`Erro: Tarefa "${tarefaParaRemover}" não encontrada.`);
      }
    }, 1500); // Simula demora de 1.5 segundos
  });
}

// 3. Função principal usando async/await para gerenciar o fluxo
async function gerenciarTarefas() {
  try {
    console.log("📋 Tarefas iniciais:", tarefas);

    // Aguarda a adição terminar antes de continuar
    const msgAdicionar = await adicionarTarefa("Ler um livro");
    console.log("✅", msgAdicionar);
    console.log("📋 Tarefas após adicionar:", tarefas);

    // Aguarda a remoção terminar antes de continuar
    const msgRemover = await removerTarefa("Fazer compras");
    console.log("✅", msgRemover);
    console.log("📋 Tarefas após remover:", tarefas);

    // Descomente a linha abaixo para testar o erro (catch)
    // await removerTarefa("Tarefa Inexistente");

  } catch (erro) {
    console.error("❌ Ocorreu um erro no gerenciamento:", erro);
  }
}

// Executar
gerenciarTarefas();

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: