# Na analogia da encomenda, o que a Promise representa?
- [ ] O livro que já está na mão de quem comprou
- [X] O recibo: a garantia de um resultado que ainda vai chegar
- [ ] A página inteira, que fica travada até o pacote chegar
- [ ] O servidor que envia o livro
> Dica: slide 2
# O que uma Promise representa no JavaScript?
- [ ] Um valor que já está disponível no momento em que o código é lido
- [X] O resultado futuro de uma operação assíncrona
- [ ] Uma função que só pode ser chamada uma vez
- [ ] Um laço que repete uma tarefa a cada segundo
> Dica: slide 3
# Qual é o estado inicial de uma Promise recém-criada?
- [ ] fulfilled
- [ ] rejected
- [X] pending
- [ ] settled
> Dica: slide 4
# Qual estado indica que a operação terminou com sucesso e a Promise carrega um valor?
- [ ] pending
- [X] fulfilled
- [ ] rejected
- [ ] waiting
> Dica: slide 4
# O que a chamada `resolve(valor)` faz?
- [ ] Cancela a operação e entrega o motivo da falha
- [X] Conclui a Promise com sucesso e a leva ao estado fulfilled
- [ ] Cria uma segunda Promise encadeada
- [ ] Pausa a página inteira até o valor existir
> Dica: slide 5
# O que a chamada `reject(motivo)` faz?
- [ ] Entrega o valor de sucesso para o próximo `.then()`
- [X] Conclui a Promise com falha e a leva ao estado rejected
- [ ] Apaga a Promise e recomeça em pending
- [ ] Converte a função em `async`
> Dica: slide 5
# Quando o método `.then()` é executado?
- [ ] Assim que a Promise é criada, ainda em pending
- [X] Quando a Promise é cumprida e há um valor de sucesso
- [ ] Sempre que a Promise é rejeitada
- [ ] Uma vez por segundo, enquanto a operação espera
> Dica: slide 7
# Para que serve o método `.catch()`?
- [ ] Para criar a Promise e iniciar o `setTimeout`
- [X] Para tratar o motivo quando a Promise é rejeitada
- [ ] Para devolver o valor de uma Promise cumprida
- [ ] Para marcar uma função com `async`
> Dica: slide 7
# No encadeamento, o que acontece com o valor devolvido por um `.then()`?
- [ ] Ele é descartado e a cadeia recomeça do zero
- [X] Ele entra como entrada do `.then()` seguinte
- [ ] Ele só pode ser lido dentro de um `.catch()`
- [ ] Ele volta a Promise para o estado pending
> Dica: slide 8
# O que a palavra-chave `await` faz dentro de uma função `async`?
- [ ] Cancela a Promise e segue para a próxima linha na mesma hora
- [X] Pausa só essa função até a Promise ser cumprida e entrega o valor
- [ ] Trava o navegador inteiro até o servidor responder
- [ ] Transforma um `.catch()` em `.then()`
> Dica: slide 9
# Uma função declarada com `async` devolve o quê?
- [ ] Um valor já calculado, sem Promise
- [X] Uma Promise
- [ ] Apenas `undefined`, mesmo quando há `return`
- [ ] O motivo passado para `reject`
> Dica: slide 9
# Com `async`/`await`, o que ocupa o lugar do `.catch()` quando uma etapa falha?
- [ ] Um segundo `await` logo abaixo
- [X] O bloco `try`/`catch`
- [ ] A palavra `pending` antes da chamada
- [ ] O método `.then()` sem argumentos
> Dica: slide 10
# Na função `buscar(url)` escrita com `XMLHttpRequest`, quando a Promise é cumprida?
- [ ] No momento em que `xhr.send()` é chamado
- [X] Quando a requisição termina com status entre 200 e 299
- [ ] Sempre que o status é 404, porque a resposta chegou
- [ ] Quando `readyState` vale 1
> Dica: slide 12