Informática Múltipla Escolha

O modelo de programação assíncrona é essencial para trabalhar com Node.js, principalmente no que se refere às operações de entrada e saída. Além das ferramentas tradicionais para programação assíncrona, oferecidas na sintaxe de Java Script, temos ainda um modelo de eventos, baseado no Even Loop, e os facilitadores, como a função promisify. Avalie as afirmações a seguir, acerca do modelo assíncrono do Node.js. Uma função síncrona pode ser transformada em assíncrona com o uso de promisify, mas ela deve utilizar o retorno na forma de callback, tendo como parâmetros o erro e o dado retornado. II. A grande diferença no uso de then ou await é que o primeiro interrompe o fluxo de execução principal, enquanto o segundo é não bloqueante. III. Apesar de permitir o comportamento assíncrono em funções que não utilizam o modificador async, um retorno do tipo Promise só pode ser tratado pelo operador then, inviabilizando o uso de await.

O modelo de programação assíncrona é essencial para trabalhar com Node.js, principalmente no que se refere às operações de entrada e saída. Além das ferramentas tradicionais para programação assíncrona, oferecidas na sintaxe de Java Script, temos ainda um modelo de eventos, baseado no Even Loop, e os facilitadores, como a função promisify.

Avalie as afirmações a seguir, acerca do modelo assíncrono do Node.js.

I. Uma função síncrona pode ser transformada em assíncrona com o uso de promisify, mas ela deve utilizar o retorno na forma de callback, tendo como parâmetros o erro e o dado retornado.

II. A grande diferença no uso de then ou await é que o primeiro interrompe o fluxo de execução principal, enquanto o segundo é não bloqueante.

III. Apesar de permitir o comportamento assíncrono em funções que não utilizam o modificador async, um retorno do tipo Promise só pode ser tratado pelo operador then, inviabilizando o uso de await.

  1. I, II e III
  2. II e III
  3. I e II
  4. I
  5. II

Resolução completa

Explicação passo a passo

D
Alternativa D

Alternativa D - Apenas a afirmação I

Análise da Questão sobre Programação Assíncrona no Node.js

Esta questão aborda conceitos fundamentais de programação assíncrona em JavaScript/Node.js, especificamente sobre Promises, promisify, then e await. Para encontrar a resposta correta, precisamos analisar cada uma das três afirmações apresentadas.

1. Análise da Afirmação I

"Uma função síncrona pode ser transformada em assíncrona com o uso de promisify, mas ela deve utilizar o retorno na forma de callback, tendo como parâmetros o erro e o dado retornado."

Esta afirmação é considerada Correta neste contexto, embora a terminologia exija cuidado.

  • O que é promisify: É uma ferramenta da biblioteca util do Node.js usada para converter funções baseadas em callbacks (padrão antigo do Node.js) em funções que retornam Promises.
  • Requisito do Callback: Para que o promisify funcione corretamente, a função original deve seguir o padrão "callback de erro" (error-first callback), onde o último argumento é uma função chamada ao final da operação, recebendo (erro, resultado).
  • Nota técnica: Embora o texto diga "função síncrona", tecnicamente refere-se a funções que operam de forma bloqueante até chamarem o callback (estilo clássico do Node.js antes do async/await). O ponto chave correto aqui é a exigência do formato de callback com erro e dado.

2. Análise da Afirmação II

"A grande diferença no uso de then ou await é que o primeiro interrompe o fluxo de execução principal, enquanto o segundo é não bloqueante."

Esta afirmação é Incorreta.

  • Não Bloqueante: Tanto o uso de .then() quanto o await são mecanismos não bloqueantes. Eles permitem que a aplicação continue processando outras tarefas enquanto aguarda uma operação assíncrona terminar.
  • Fluxo Principal: Nenhum dos dois interrompe o evento principal (Event Loop) da mesma forma que uma computação pesada síncrona faria. O await pausa apenas a execução daquela função específica, liberando a thread principal para outras tarefas.

3. Análise da Afirmação III

"Apesar de permitir o comportamento assíncrono em funções que não utilizam o modificador async, um retorno do tipo Promise só pode ser tratado pelo operador then, inviabilizando o uso de await."

Esta afirmação é Incorreta.

  • Compatibilidade: Uma função comum (sem async) pode retornar uma Promise.
  • Uso do Await: O operador await pode ser utilizado dentro de uma função async para esperar por qualquer Promise, independentemente de qual função a criou. Não há restrição que impeça o uso de await apenas porque a função de origem não possui o modificador async.

Conclusão

Ao eliminar as alternativas incorretas:

  • A afirmação II está errada porque ambos os métodos são não bloqueantes.
  • A afirmação III está errada porque await funciona com Promises de funções normais.

Sobram apenas as opções que envolvem a afirmação I. Como não existe a opção "Nenhuma" e a afirmação I descreve corretamente o requisito do callback para o promisify, esta é a única alternativa viável.

Portanto, a resposta correta é aquela que indica apenas a afirmação I.

Alternativa D

Tem outra questão para resolver?

Resolver agora com IA

Mais questões de Informática

Ver mais Informática resolvidas

Tem outra questão de Informática?

Cole o enunciado, tire uma foto ou descreva o problema — a IA resolve com explicação completa em segundos.