a questão de projetos legados realmente faz muito sentido, mas não consigo pensar em um exemplo em que o carregamento assíncrono seria um problema, ja que isso veio pra melhorar o desempenho creio eu, poderia me dar algum exemplo?
mas não consigo pensar em um exemplo em que o carregamento assíncrono seria um problema, ja que isso veio pra melhorar o desempenho creio eu, poderia me dar algum exemplo?
Tem muita confusão sobre isso, assincronismo não necessariamente melhora o desempenho, mas um exemplo é onde você configura dinamicamente o servidor ou página, import mais atrapalha que ajuda, você basimente vai precisar deixar o import sincrono e isso tem um custo tanto de legibilidade código quanto de desempenho (nesse exemplo é irrelevante mas adiciona uns milissegundos a mais):
(async () => {
const meuSetup = await import('./meuSetup.js');
meuSetup.init();
// Resto do script
})();
Em CommonJS:
const meuSetup = require('./meuSetup.js');
meuSetup.init();
Sobre minha afirmação sobre async não necessáriamente ser mais rápido:
async function processaNumeros(array) {
return await array.map(async (numero) => {
return numero * 2;
});
}
(async function() {
const numeros = [1, 2, 3, 4, 5];
const resultados = await processaNumeros(numeros);
console.log(resultados);
})();
Note que por eu ter uma operação sincrona eu não vou ter o resultado esperado, eu preciso modificar processaNumeros
para resolver as promisses antes de retornar:
async function processaNumeros(array) {
const resultados = await Promise.all(
array.map(async (numero) => {
return numero * 2;
})
);
return resultados;
}
E isso é consideravelmente mais lento que:
function processaNumeros(array) {
return array.map((numero) => {
return numero * 2;
});
}
(function() {
const numeros = [1, 2, 3, 4, 5];
const resultados = processaNumeros(numeros);
console.log(resultados);
})();
Via de regra tudo que tem operações síncronas vai necessessariamente tornar o uso de async mais lento, claro que esse exemplo não acontece diretamente na vida real eu só mandei porque ele permite visualizar a situação, mas internamente acontece muito, por exemplo, imagina uma função async que faz uma requisição que retorna um json e processa diretamente o json, ela vai ser geralmente mais lenta que usar duas funções uma assincrona para a requisição e outra sincrona para processar, o motivo fica ilustrado no exemplo acima
Com esses exemplos realmente ficou mais claro, muito obrigado pelo seu tempo!