JavaScript Síncrono e Assíncrono
O JavaScript roda em uma única thread. Isso significa que ele executa uma coisa de cada vez. Você precisa entender como ele lida com tarefas para escrever um código eficiente.
JavaScript Síncrono
O código síncrono é executado linha por linha. Cada tarefa espera que a tarefa anterior termine. Isso é chamado de bloqueio (blocking). Se uma tarefa demorar muito, todo o programa para.
- Execução: Sequência fixa.
- Bloqueio: Sim.
- Complexidade: Simples.
- Ideal para: Tarefas simples e sequenciais.
JavaScript Assíncrono
O código assíncrono é executado de forma independente. As tarefas não bloqueiam outros códigos enquanto esperam. Isso é chamado de não bloqueante (non-blocking). A tarefa começa em segundo plano e notifica você quando termina.
- Execução: As tarefas rodam de forma independente.
- Bloqueio: Não.
- Complexidade: Maior.
- Ideal para: Chamadas de API, timers e operações de arquivo.
Três maneiras de lidar com tarefas assíncronas:
- Callbacks: Uma função que é executada após a conclusão de uma tarefa.
- Promises: Um objeto que representa a conclusão ou falha de uma operação.
- Async/Await: O método mais limpo. Ele faz o código assíncrono parecer código síncrono sem bloquear a thread.
Operações assíncronas comuns:
- Timers:
setTimeout() - Chamadas de API:
fetch() - Leitura de arquivos:
readFile() - Eventos de usuário:
addEventListener()
O Event Loop faz isso funcionar. Ele utiliza a Call Stack, Web APIs e uma Callback Queue para gerenciar múltiplas tarefas ao mesmo tempo.
Resumo:
- Síncrono: Um após o outro. Bloqueia a execução.
- Assíncrono: Tarefas independentes. Não bloqueia.
- Padrão do JavaScript: Síncrono.
Source: https://www.geeksforgeeks.org/javascript/synchronous-and-asynchronous-in-javascript/ Source: https://www.w3schools.com/js/js_asynchronous.asp Source: https://medium.com/@mohdtalib.dev/what-is-synchronous-and-asynchronous-in-javascript-07adb7b4cc5f
Full post: https://dev.to/raja_b_0c9d242e2c26cf063b/javascript-synchronous-and-asynchronous-2a69