A programação assíncrona é um dos principais pontos fortes do JavaScript, especialmente em Node.js; no entanto, devido à necessária separação de interesses, múltiplas operações assíncronas são frequentemente executadas por meio de retornos de chamada, e isso pode levar ao que é conhecido como “inferno de retorno de chamada”. Por exemplo, considere uma situação em que estamos trabalhando com retornos de chamada aninhados em nosso código JavaScript e vamos ver como podemos refatorá-lo usando Promises e a estrutura async/await.
Vamos começar com um código que usa retornos de chamada para lidar com operações de arquivo para um sistema simples de gerenciamento de produtos:
Aqui, temos várias backcalls bem aninhadas para ler e gravar em um arquivo. Este é provavelmente um dos casos em que você escreveria quando estivesse no fundo do inferno dos retornos de chamada. Finalmente, com um número maior de operações assíncronas, o código aumentará, assim como a quantidade de recuo, dificultando a leitura. No método save(), a função fs.readFile lê o arquivo e, em seguida, seu retorno de chamada analisa o conteúdo e usa uma função fs.writeFile para reescrever o conteúdo do arquivo, o que é feito em outro retorno de chamada. Esses níveis de aninhamento fazem com que o código se assemelhe ao que é chamado de “pirâmide da destruição”.
Mudando para Promises e Async/Await
Aqui está a versão melhorada:
Conclusão
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3