Promises: Promessas de Valor Futuro

O que vais aprender nesta aula:

  • O conceito de Promise (Pendente, Resolvida, Rejeitada)
  • Como criar uma Promise: new Promise(...)
  • Como consumir uma Promise: .then() e .catch()

🧠 Teoria (com Analogia e Contexto Real)

No código assíncrono, não sabemos SE nem QUANDO o resultado chega. A Promise é um objeto que representa esse "talvez".

🎁 Analogia da Encomenda Online

1. Pending (Pendente): Acabaste de encomendar. Ainda não tens o produto, mas tens uma "promessa" de entrega.

2. Resolved (Resolvida): O estafeta tocou à campainha. A promessa foi cumprida (Sucesso!).

3. Rejected (Rejeitada): Recebes um email a dizer que houve um extravio. A promessa falhou (Erro).

💻 Prática (Orientada e Progressiva)

A estrutura de uma Promessa:

Criar e Consumir

// 1. A Promessa
const minhaPromessa = new Promise((resolve, reject) => {
    let sucesso = true; // Simulação

    if (sucesso) {
        resolve("Pizza entregue! 🍕");
    } else {
        reject("O estafeta perdeu-se. 😢");
    }
});

// 2. O Consumo
minhaPromessa
    .then((mensagem) => {
        console.log("Sucesso: " + mensagem);
    })
    .catch((erro) => {
        console.log("Erro: " + erro);
    });

🧪 Simulador de Pedido Uber Eats

Clica para pedir. Pode demorar entre 1 a 3 segundos. Há 50% de hipótese de falhar!

✅ Verificação de Conhecimento

1. O método `.then()` é executado quando...?

A promessa é rejeitada (Erro).
A promessa é resolvida com sucesso.
A promessa ainda está pendente.

2. O que faz o `.finally()`?

Cancela a promessa.
Executa apenas se houver erro.
Executa sempre, independentemente do resultado (sucesso ou erro).