SetTimeout
- #JavaScript
O que significa a palavra assíncrona? E o que é JavaScript assíncrono?
Síncrono e assíncrono referem-se à maneira como as ações ou processos são executados em um sistema de computador.
Síncrono:
- No contexto de programação, síncrono significa que as ações ocorrem de forma sequencial e imediata.
- Em uma conversa cara a cara, por exemplo, as pessoas interagem em tempo real, respondendo imediatamente após a outra pessoa falar.
- Em programação síncrona, um código aguarda até que a ação atual seja concluída antes de prosseguir para a próxima.
Assíncrono:
- No contexto de programação, assíncrono significa que as ações não ocorrem imediatamente uma após a outra e podem ocorrer em diferentes momentos.
- Em uma conversa por mensagem de texto, os participantes podem responder em momentos diferentes, não necessariamente em tempo real.
- Em programação assíncrona, o código pode continuar executando outras tarefas enquanto aguarda a conclusão de uma ação. Isso é útil para lidar com operações que podem levar algum tempo, como carregar dados da internet ou processar grandes quantidades de informações.
A diferença fundamental é que a programação síncrona bloqueia a execução até que uma tarefa seja concluída, enquanto a programação assíncrona permite que outras tarefas sejam realizadas enquanto aguarda respostas de tarefas assíncronas em segundo plano. Isso é especialmente útil para melhorar a eficiência e a capacidade de resposta em sistemas de software.
Vejamos o exemplo da previsão do tempo. Quando você solicita a um determinado serviço/API a previsão do tempo em um determinado local, o resultado não será instantâneo. Levará entre 100ms e 1s (em média).
Isso ocorre porque seu aplicativo precisa enviar uma solicitação para outro servidor, que então precisa processá-la e, finalmente, enviar a resposta de volta.
O que queremos dizer com isso é que essas coisas geralmente levam algum tempo. Por outro lado, o código a seguir é executado imediatamente:
console.log("A");
console.log("B");
Mas esse não é o caso quando se trabalha com APIs. E, para simplificar os tópicos, ainda não trabalharemos com API, começaremos simulando um resultado que leva algum tempo para ser concluído.
setTimeout
Para fazer isso, usaremos uma função do navegador chamada setTimeout
. Veja como funciona:
setTimeout(() => {
console.log("Um segundo se passou.");
}, 1_000);
A assinatura da função setTimeout
é setTimeout(callback, milliseconds)
.
Ao executar o código acima, você verá "Um segundo se passou."
aproximadamente 1 segundo depois de executar o código.
Portanto, o que a setTimeout
função faz é enfileirar a callback
função que você especificar no futuro. Ele aguardará o milliseconds
que você especificou. Neste exemplo, especificamos 1000 milissegundos, o que equivale a 1 segundo.
A callback
é a seguinte função:
() => {
console.log("Um segundo se passou.");
}
Neste exemplo, 1 segundo no futuro. Como ele é executado em algum momento futuro, chamamos isso de retorno de chamada assíncrono.
Recapitular
- Ao trabalhar com APIs (por exemplo, um serviço que retorna a previsão do tempo), o resultado/resposta demorará algum tempo para voltar. É por isso que estamos aprendendo sobre JavaScript assíncrono.
setTimeout(callback, milliseconds)
é uma função JavaScript que coloca na filacallback
o futuro (dependendo do quemilliseconds
você especificar).- Um retorno de chamada assíncrono é um retorno de chamada executado em algum momento no futuro.