Pular para o conteúdo principal

Questão de Programação — JavaScript — INSTITUTO AOCP 2023

ProgramaçãoJavaScript
Código
qq971016
Banca
INSTITUTO AOCP
Órgão
IF-MA
Ano
2023
Nível
Superior
Cargo
Analista De Tecnologia Da Informação - Desenvolvimento De Sistemas
No JavaScript, a execução de código assíncrono pode ser gerenciada de várias maneiras. A respeito de como lidar com a execução assíncrona de código JavaScript, assinale a alternativa INCORRETA.
  1. AUtilizar callbacks, em que uma função é passada como argumento para outra função e é chamada quando a execução assíncrona é concluída.
  2. BUtilizar Promises, que representam o resultado de uma operação assíncrona que pode ser concluída no futuro.
  3. CUtilizar async/await, que permite escrever código assíncrono de maneira síncrona, facilitando a legibilidade do código.
  4. DUtilizar generators, que permitem a criação de funções cuja execução pode ser suspensa e retomada posteriormente.
  5. EUtilizar o operador "sincrono" para forçar a execução síncrona do código assíncrono.
Revelar gabarito e comentário

GabaritoE — Utilizar o operador "sincrono" para forçar a execução síncrona do código assíncrono.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

JavaScript: Assincronismo e Formas de Gerenciamento

Gabarito: letra E. A alternativa incorreta é a que menciona o operador "sincrono" para forçar a execução síncrona de código assíncrono, pois não existe tal operador em JavaScript. As demais alternativas descrevem corretamente os mecanismos de callbacks, Promises, async/await e generators, que são as formas reais de lidar com a execução assíncrona na linguagem.

O JavaScript é uma linguagem single-threaded, ou seja, executa o código em uma única thread principal. Para lidar com operações demoradas, como requisições de rede ou leitura de arquivos, sem bloquear a execução do programa, a linguagem utiliza o modelo de assincronismo. Nesse modelo, operações que levariam tempo são iniciadas e o código continua executando, sendo o resultado tratado posteriormente, quando a operação é concluída. Os principais mecanismos para gerenciar esse comportamento são:

  • Callbacks: funções passadas como argumento para outras funções, que são chamadas quando a operação assíncrona termina. É a forma mais antiga e simples, mas pode levar ao chamado "callback hell" quando há muitas operações encadeadas.

  • Promises: objetos que representam o resultado futuro de uma operação assíncrona. Elas podem estar em três estados: pending (pendente), fulfilled (concluída com sucesso) ou rejected (rejeitada com erro). Permitem encadear operações com .then() e tratar erros com .catch().

  • async/await: uma sintaxe mais moderna que permite escrever código assíncrono de forma semelhante ao código síncrono, facilitando a leitura e a manutenção. A palavra-chave async marca uma função como assíncrona, e await pausa a execução até que uma Promise seja resolvida.

  • Generators: funções que podem ser pausadas e retomadas, usando yield para emitir valores e next() para continuar a execução. Embora não sejam especificamente para assincronismo, podem ser usados para controlar fluxos assíncronos de forma mais complexa.

A alternativa E inventa um operador chamado "sincrono", que não existe na linguagem. Não há como "forçar" a execução síncrona de código assíncrono em JavaScript; o que se faz é usar os mecanismos acima para gerenciar a assincronia de forma adequada. A banca explora exatamente essa confusão, criando um termo que parece plausível, mas que não tem fundamento na linguagem.

NÃO CAIA NESSA!

A banca cria um termo fictício, "operador sincrono", para induzir o candidato a acreditar que existe uma forma de forçar a execução síncrona. Em JavaScript, não há tal operador; o que existe são os mecanismos de callbacks, Promises, async/await e generators para lidar com a assincronia. Fique atento a termos que não fazem parte da linguagem.

Assincronismo em JS
  • 1Modelo
    • Single-threaded
    • Operações demoradas não bloqueiam
  • 2Mecanismos reais
    • Callbacks
      • Função passada como argumento
      • Chamada ao concluir
    • Promises
      • Resultado futuro
      • Estados: pending, fulfilled, rejected
    • async/await
      • Código assíncrono com aparência síncrona
      • await pausa até resolver
    • Generators
      • Execução suspensa/retomada
      • yield e next()
  • 3Operador "sincrono"
    • Não existe em JS
    • Termo fictício da banca
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta

A descrição de callbacks está correta. Uma função de callback é passada como argumento para outra função e é invocada quando a operação assíncrona é concluída. Esse é um dos mecanismos fundamentais de assincronismo em JavaScript, amplamente utilizado em funções como setTimeout, setInterval e em APIs de eventos.

Alternativa B — ✅ Correta

Promises são objetos que representam o resultado de uma operação assíncrona que pode ser concluída no futuro. Elas possuem três estados: pending, fulfilled e rejected, e são a base para o tratamento de operações assíncronas de forma mais estruturada, permitindo encadeamento e tratamento de erros.

Alternativa C — ✅ Correta

A sintaxe async/await permite escrever código assíncrono de maneira síncrona, melhorando a legibilidade. Uma função declarada com async retorna uma Promise, e o operador await pausa a execução até que a Promise seja resolvida, tornando o código mais linear e fácil de entender.

Alternativa D — ✅ Correta

Generators são funções que podem ter sua execução suspensa e retomada posteriormente, usando yield para pausar e next() para continuar. Embora não sejam exclusivamente para assincronismo, são uma ferramenta poderosa para controlar fluxos de execução, incluindo operações assíncronas.

Alternativa E — ❌ Incorreta ⟵ GABARITO

A alternativa afirma que existe um operador "sincrono" para forçar a execução síncrona de código assíncrono, o que é falso. Não existe tal operador em JavaScript. A linguagem não oferece uma forma de "forçar" a execução síncrona de operações assíncronas; em vez disso, fornece os mecanismos de callbacks, Promises, async/await e generators para gerenciar a assincronia. A banca criou um termo fictício para testar o conhecimento do candidato sobre os recursos reais da linguagem.

Gabarito: letra E — a única alternativa incorreta, pois inventa um operador que não existe em JavaScript.

Link permanente: /questoes/qq971016