// Banco de dados simulado (Array)
const listaDeTarefas = [];

// 1. Função para ADICIONAR tarefa retornando uma Promise
function adicionarTarefa(tarefa) {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            if (!tarefa) {
                reject("Erro: O nome da tarefa não pode estar vazio.");
            } else {
                listaDeTarefas.push(tarefa);
                console.log(`✅ Tarefa "${tarefa}" adicionada com sucesso.`);
                resolve();
            }
        }, 1000); // Simula 1 segundo de espera
    });
}

// 2. Função para REMOVER tarefa retornando uma Promise
function removerTarefa(tarefa) {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            const index = listaDeTarefas.indexOf(tarefa);
            if (index === -1) {
                reject(`❌ Erro: Tarefa "${tarefa}" não foi encontrada.`);
            } else {
                listaDeTarefas.splice(index, 1);
                console.log(`🗑️ Tarefa "${tarefa}" removida com sucesso.`);
                resolve();
            }
        }, 1200); // Simula 1.2 segundos de espera
    });
}

// 3. Função para LISTAR as tarefas
function listarTarefas() {
    console.log("\n--- SUAS TAREFAS ATUAIS ---");
    if (listaDeTarefas.length === 0) {
        console.log("Nenhuma tarefa pendente.");
    } else {
        listaDeTarefas.forEach((tarefa, index) => {
            console.log(`${index + 1}. ${tarefa}`);
        });
    }
    console.log("---------------------------\n");
}

// 4. Função Principal Assíncrona (Gerenciador do Fluxo)
async function sistemaGerenciador() {
    try {
        console.log("Iniciando o Sistema de Tarefas...\n");

        // Adicionando tarefas sequencialmente com await
        await adicionarTarefa("Estudar Promises em JS");
        await adicionarTarefa("Finalizar Miniprojeto da Aula 41");
        await adicionarTarefa("Revisar conteúdo de Async/Await");
        
        // Listando após inserções
        listarTarefas();

        // Removendo uma tarefa
        await removerTarefa("Finalizar Miniprojeto da Aula 41");

        // Listando após remoção
        listarTarefas();

        // Testando o tratamento de erro (descomente a linha abaixo para testar o erro)
        // await removerTarefa("Tarefa que não existe");

    } catch (erro) {
        // Captura qualquer rejeição das Promises acima
        console.error("Ocorreu um problema no sistema:", erro);
    } finally {
        console.log("Sistema encerrado.");
    }
}

// Executa o programa
sistemaGerenciador();

Embed on website

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