Node.js opera em uma arquitetura orientada a eventos de thread único, o que significa que ele pode lidar com muitas operações simultaneamente sem bloquear o thread principal. Isso é crucial para a criação de aplicativos escalonáveis onde tarefas como operações de E/S (leitura de arquivos, consulta de bancos de dados, etc.) precisam acontecer de forma assíncrona para evitar o bloqueio da execução de outro código.
O código síncrono executa uma etapa de cada vez, o que significa que cada etapa deve ser concluída antes de passar para a próxima. Isso pode bloquear o thread principal se as operações forem lentas (por exemplo, lendo um arquivo grande ou consultando um banco de dados).
Exemplo (código síncrono):
const fs = require('fs'); const data = fs.readFileSync('file.txt', 'utf8'); console.log(data);
O código assíncrono, por outro lado, não bloqueia o thread principal. Em vez de aguardar a conclusão de uma operação, o programa continua a execução e trata o resultado da operação assíncrona quando estiver pronto.
Exemplo (código assíncrono):
const fs = require('fs'); // Call Back fs.readFile('file.txt', 'utf8', (err, data) => { if (err) throw err; console.log(data); }); console.log('This will log before the file content!');
Assíncrono/Aguardar
Introduzido no ES2017 (Node.js 7.6), async/await é um açúcar sintático construído com base em promessas. Ele permite que o código assíncrono seja escrito de maneira síncrona, tornando-o mais legível e fácil de manter.
Exemplo (assíncrono/espera):
const fs = require('fs').promises; async function readFile() { try { const data = await fs.readFile('file.txt', 'utf8'); console.log(data); } catch (err) { console.error(err); } } readFile();
A escolha do código assíncrono versus código de sincronização depende do seu caso de uso. Para operações com muita E/S, sempre prefira padrões assíncronos para manter o thread principal sem bloqueio e seu aplicativo responsivo.
Obrigado por ler e boa codificaçã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