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 é
- await enviar(n) || await enviar(n) || await enviar(n);
- for (let i = 0; i < 3; i++) enviar(n).then(() => break).catch(() => {});
- for (let i = 0; i < 3; i++) try { await enviar(n); break; } catch {}
- let i = 0; while (i < 3 && !(await enviar(n))) i++;
- 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