FC ConcursosFC Concursos

Questão FC546372

Uma Secretaria da Fazenda precisa implementar, em JavaScript, uma rotina assíncrona para envio de uma Nota Fiscal Eletrônica (NF-e). A função enviar(nota) retorna uma Promise que p

Desenvolvimento Web

FCC · 2025

Uma Secretaria da Fazenda precisa implementar, em JavaScript, uma rotina assíncrona para envio de uma Nota Fiscal Eletrônica (NF-e). A função enviar(nota) retorna uma Promise que pode ser rejeitada em caso de falha. Deseja-se que a nota seja enviada até três vezes, se necessário, que o envio pare imediatamente após a primeira tentativa bem-sucedida e que o código utilize async/await. Em condições ideais, a instrução que implementa corretamente essa lógica é

  1. await enviar(n) || await enviar(n) || await enviar(n);
  2. for (let i = 0; i < 3; i++) enviar(n).then(() => break).catch(() => {});
  3. for (let i = 0; i < 3; i++) try { await enviar(n); break; } catch {}
  4. let i = 0; while (i < 3 && !(await enviar(n))) i++;
  5. await enviar(n).catch(() => await enviar(n).catch(() => await enviar(n)));
Mostrar resposta e comentário

Gabarito

Certo

Comentário do professor

O código for (let i = 0; i < 3; i++) try { await enviar(n); break; } catch {} implementa corretamente a lógica desejada.

O laço for garante até três tentativas, com let i controlando repetições. A expressão await faz a execução pausar até que a Promise retornada por enviar(n) seja resolvida ou rejeitada.

O bloco try envolve a chamada para capturar rejeições: se a Promise for rejeitada, a execução vai para o catch e o laço continua para outra tentativa.

Quando o envio tem sucesso, o código chega ao break, que interrompe imediatamente o laço, evitando tentativas desnecessárias.

O catch {} vazio apenas suprime o erro entre tentativas; em produção pode-se registrar ou tratar o erro dentro do catch antes de continuar.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo