Executando verificação de segurança...
2

Programação Síncrona vs Assíncrona

Programação Síncrona:

  • Na programação síncrona, as tarefas são executadas uma após a outra. Cada tarefa aguarda a conclusão da anterior antes de iniciar.
  • Isso é simples de entender e seguir, pois o fluxo de controle é linear.
  • No entanto, isso pode levar ao "bloqueio", especialmente em operações de entrada/saída. Se uma tarefa demora muito para ser concluída, o programa inteiro é efetivamente interrompido.
console.log("Início");
function fazerAlgo() 
{
    console.log("Fazendo algo...");
}
fazerAlgo();
console.log("Finalizado");

Saída:

  1. Início
  2. Fazendo algo...
  3. Finalizado

Programação Assíncrona:

  • A programação assíncrona permite que as tarefas sejam realizadas em segundo plano, sem bloquear a thread principal de execução.
  • O fluxo de controle é devolvido imediatamente, e a tarefa é concluída em algum momento no futuro.
  • Isso é particularmente útil no JavaScript, que é uma linguagem single thread. Se você executar uma tarefa de longa duração, como buscar dados de um servidor, isso não bloqueará outras operações, como atualizações da interface do usuário.
  • JavaScript sempre teve um forte enfoque em operações assíncronas, devido à sua natureza orientada a eventos. Isso era manipulado através de callbacks muito antes da introdução de Promises/async/await.
console.log("Início");
setTimeout(() => {
    console.log("Fazendo algo...");
}, 1000);
console.log("Finalizado");

Saída:

  1. Início
  2. Finalizado
  3. Fazendo algo...

Promises, async, await.

Uma Promise é um objeto que representa a eventual conclusão ou falha de uma operação assíncrona. Isso permite que métodos assíncronos retornem valores imediatos de forma síncronos: em vez de retornar o valor final, porém o método retorna uma 'promessa' de fornecer o valor em algum momento no futuro.

Quando usado antes de uma função, a palavra-chave async torna essa função retornar uma Promise automaticamente. Se a função retorna um valor, a Promise será resolvida com esse valor; se a função lança uma exceção, a Promise será rejeitada com essa exceção.

Quando você usa await em uma função marcada com async, a execução da função é pausada até que a Promise esperada seja resolvida (ou rejeitada). Isso significa que o código após o await dentro da função espera a conclusão da Promise antes de continuar.

Isso permite que os desenvolvedores escrevam código que lida com operações 'bloqueantes' de uma maneira que se parece muito com o estilo síncrono, mas sem os inconvenientes de 'travar' a thread de execução do programa.

Carregando publicação patrocinada...