Questão nº 76

Questão de Tecnologia da Informação · FGV TCE-SP 2023 (nº 76)

FGV2023Auxiliar Técnico da Fiscalização - TITecnologia da Informação
Gabarito: Ever comentário ↓

Tatiana está efetuando a manutenção de uma página, e para testar a execução de uma função assíncrona em JavaScript, utilizou a escrita no documento, via método writeln, como no fragmento de código a seguir.

const fatorial = async(a) => {
   let b = a;
   while(--a>0) b*=a;
   return b;
}
document.writeln(`Fat 5: ${fatorial(5)}`);

Tatiana esperava verificar a impressão do fatorial de cinco, mas o que viu foi [object Promise]. Tatiana resolveu o problema, alterando a escrita no documento para:

Resposta comentada

Gabarito Alternativa E

Funções assíncronas em JavaScript, marcadas com async, sempre retornam um objeto Promise, que é uma promessa de que um valor estará disponível no futuro. Para acessar o valor real (o resultado da operação), precisamos "esperar" que essa Promise seja resolvida, o que pode ser feito com .then() ou await. O problema original ocorre porque fatorial(5) retorna uma Promise, e ao tentar imprimi-la diretamente, o JavaScript converte o objeto Promise para sua representação em string, que é [object Promise].

  • (A) Incorreta: A concatenação de strings com + trata o objeto Promise da mesma forma que o template literal, resultando na impressão de [object Promise].
  • (B) Incorreta: O operador await só pode ser utilizado dentro de uma função async. Como a chamada a document.writeln não está dentro de uma função async, isso geraria um erro de sintaxe.
  • (C) Incorreta: A sintaxe x = fatorial(5) => ... está incorreta. Mesmo que fosse let x = fatorial(5); document.writeln(...), a variável x ainda conteria o objeto Promise, não seu valor resolvido.
  • (D) Incorreta: Similar à alternativa B, await não pode ser usado diretamente no escopo global ou fora de uma função async. Além disso, document.writeln não é uma função assíncrona para ser "awaitada".
  • (E) Correta: O método .then() é a forma padrão de lidar com o resultado de uma Promise. Ele registra uma função de callback que será executada apenas quando a Promise for resolvida (ou seja, quando o cálculo do fatorial for concluído), recebendo o valor final (x) como argumento. Assim, document.writeln imprime o valor correto.

Fonte: FGV TCE-SP 2023 Auxiliar Técnico da Fiscalização - TI (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho