Análise da Questão
Esta questão aborda o uso de Promises (Promessas) no ecossistema JavaScript, especificamente no contexto de Node.js e consumo de APIs. O formato "Select all that apply" indica que mais de uma alternativa pode estar correta.
Alternativas A e D
Justificativa Didática
O objetivo principal das Promises em JavaScript é gerenciar operações assíncronas de forma mais limpa do que os antigos "callbacks" aninhados.
Por que as alternativas corretas são verdadeiras:
- Alternativa A (Execução Assíncrona): Embora o Node.js execute código assincronamente por natureza (ex:
fs.readFile), as Promises fornecem a estrutura padrão para lidar com esse comportamento. Elas permitem que você espere pelo resultado sem bloquear a execução do restante do código. Em muitos currículos de certificação (como FreeCodeCamp), isso é listado como um benefício fundamental. - Alternativa D (Encadeamento/Chaining): Esta é a característica mais distintiva das Promises. Você pode usar o método
.then() repetidamente para encadear várias operações assíncronas sequencialmente. Isso evita o chamado "Callback Hell" (aninhamento excessivo de funções).
Por que as outras estão incorretas:
- Alternativa B (Renderização): Promises não possuem controle sobre lógica de renderização de interface (UI). Elas apenas entregam o dado quando pronto. Quem decide quando e como renderizar é a lógica da aplicação ou o framework frontend.
- Alternativa C (Criar Callbacks): Callbacks existem independentemente das Promises. Na verdade, as Promises foram criadas para reduzir a dependência de callbacks complexos, encapsulando-os em objetos manipuláveis.
Resumo
| Benefício | Descrição Técnica |
|---|
| Assincronia | Gerencia o fluxo de espera por dados sem travar a thread principal. |
| Chaining | Permite conectar .then() em cadeia para sequenciar passos. |
Conclusão: As Promises são essenciais para organizar código assíncrono moderno, principalmente através do encadeamento de operações e da gestão clara do estado (pending, fulfilled, rejected).