Exemplo de não programação:
Sincronizado
Você quer uma pizza para o jantar e você está fora do tipo congelado. Então você tem que parar de jogar WOW, o que perturba sua guilda. Você vai para a cozinha, faz a massa, cobre com o molho, adiciona o queijo e sufoca com sua cobertura de bacon favorita. Você acabou de gastar 20 minutos do seu tempo fazendo a pizza com mais 10 minutos no forno. O cronômetro apita e você tira a torta quente. Você pode sentar na frente do computador, comer pizza e continuar com sua invasão.
Assíncrono
Você quer uma pizza para o jantar enquanto joga WOW. Você abre uma janela do navegador em seu quinto monitor. Você abre o site da Pizza e pede sua pizza extra de bacon com queijo e molho de alho com gordura de bacon. Você volta para o seu raid e depois de 20 minutos a campainha toca. Você pega a pizza. Você se senta na frente do computador, come a pizza e continua com sua incursão.
Então qual é a diferença? De uma forma você desperdiça 20-30 minutos do precioso tempo WOW, da outra forma você desperdiça $ 20 mais a gorjeta.
Sua página é entregue a partir do servidor para um navegador do cliente, em algum lugar da Internet. O navegador desenhou a página em uma tela e alguém - ou alguma coisa - está olhando para ela. É um jogo de espera. Os olhos se movem para frente e para trás, captando este ou aquele detalhe em pulos rápidos, lançando-se para o lado de vez em quando, longe da tela, para investigar distrações no ambiente. O relógio bate. A página brilha suavemente, passivamente, à medida que o usuário passa inativo, a mão vagamente posta sobre um mouse, o pescoço curvado e os olhos cada vez mais atentos a algo convidativo que sua página tem a oferecer.
De repente, sem qualquer aviso, o cursor começa a se mover enquanto a mão do mouse endurece ligeiramente e começa a cutucar a pequena protuberância de plástico sobre a superfície áspera da mesa. Conforme o mouse se move, seu substituto na tela se move em uma imitação aproximada, passando por imagens interessantes e comentários espirituosos no conteúdo de sua página. Por fim, uma decisão é tomada, o movimento é pausado, um ou dois músculos se contraem ligeiramente e o botão do mouse é pressionado por um dedo insistente. O microinterruptor no mouse dispara um impulso eletrônico e, de repente, o navegador é informado do que aconteceu: um clique do mouse.
Em tudo isso, tudo sobre o que o usuário fez enquanto olhava a página aconteceu de uma forma totalmente imprevisível para o navegador, para qualquer código de cliente em sua página web, para qualquer coisa residente em seus servidores. Não havia um "tempo de espera" conhecido entre as ações humanas. As ações, portanto, conforme transmitidas pelo equipamento conectado ao computador do usuário, aconteciam quando aconteciam e não de acordo com um relógio previsível - ou seja, aconteciam de forma assíncrona .
fonte
Pense no final de uma entrevista, e o cara diz: "Não ligue para a gente, vamos ligar para você". Essa é a essência de um evento assíncrono.
Normalmente você define funções e as chama explicitamente. Seu programa tem uma estrutura onde começa na linha 1, depois na linha 2 e, exceto por alguns códigos condicionais e iterações, funções de chamada, etc., há uma estrutura simples, linear e síncrona.
Mas, em alguns casos, você tem ações que são acionadas por eventos fora do controle direto do programa, coisas que vêm de fora do programa, como eventos da interface do usuário (o usuário clica no mouse) ou um evento de rede (alguém tenta se conectar ao seu servidor). Seu código não gera esses eventos diretamente. Eles são gerados fora de seu programa, geralmente pelo sistema operacional com base no monitoramento de dispositivos de interface de usuário e outros sistemas. Eles são chamados de eventos assíncronos.
Lembre-se: "Não ligue para nós, nós ligaremos para você"
fonte
"Na programação, os eventos assíncronos são aqueles que ocorrem independentemente do fluxo do programa principal. As ações assíncronas são executadas em um esquema sem bloqueio, permitindo que o fluxo do programa principal continue o processamento."
Quando você clica em Editar e Salvar no SO, isso acontece de forma assíncrona.
fonte
Um evento assíncrono é um evento executado fora do thread principal do aplicativo.
A melhor maneira de entender é comparar os eventos que são executados de forma síncrona. O exemplo mais típico seria o carregamento de uma página da web.
Quando você foi para esta página, você clicou em um link e esperou a página carregar e não foi capaz de interagir ou usar esta página até que ela terminasse de carregar. Para contrastar, se esta página tivesse um evento AJAX (isto é, JavaScript assíncrono e evento XML) associado a alguma ação do usuário, esta página carregaria alguns dados de outra fonte de forma assíncrona - em paralelo (teoricamente) com quaisquer outras ações em andamento.
Exemplo com dois eventos síncronos (A e B): Primeiro, A faz algo. Quando A termina, B faz alguma coisa.
Exemplo com dois eventos assíncronos (A e B): A e B fazem algo ao mesmo tempo e nenhum dos eventos espera pelo outro.
fonte
Aqui está um exemplo de operação assíncrona em javascript (você precisa ter seu console javascript aberto)
A chamada para
console.log('Two!')
será executada sem bloquear o resto do código que acontece depois dela.Em um cenário real, substitua setTimeout por alguém clicando em um botão em uma página da web. A resposta ao clique do botão acontecerá eventualmente, sem bloquear a execução de outro código, como a renderização da página.
fonte
Simplificando, significa algo que ocorre após um período de tempo desconhecido, então não espere resultados imediatos.
Por exemplo, "Mãe, posso ficar com cinco dólares?"
Colocando minha mão em busca de dinheiro, estou esperando que ela responda imediatamente, dando-me dinheiro (sincronizado).
Realisticamente, ela vai olhar para mim por um ou dois momentos e então decidir responder quando quiser (assíncrona).
fonte
Quando dois eventos diferentes ocorrem separadamente um do outro, então você não pode
sem verificar se
task1
realmente terminou.fonte
Eventos assíncronos são aqueles eventos que não sabemos quando ocorrerão no futuro, por exemplo, quando o servidor é solicitado para algum arquivo que não sabemos quando ele atenderá a nossa solicitação ou eventos de IU que não sabemos quando o usuário irá clique em um botão ou outro elemento da IU, mas apesar disso outras coisas na página ou aplicativo estão acontecendo, não bloqueia nada, digamos que a página esmaece toda a IU até que algum arquivo do servidor não esteja chegando ou algum evento esteja acontecendo todas as coisas são independentes este é o poder dos eventos assíncronos, basta dizer eventos independentes
fonte
Síncrono vs. Eventos Assíncronos
Alguns manipuladores de eventos são chamados imediatamente quando o evento ocorre. Estes são chamados de eventos 'síncronos'. Um exemplo é DocumentNew. Ele é chamado assim que o usuário cria um novo documento.
No entanto, alguns eventos são chamados logo após a ocorrência do evento, geralmente após um curto período de tempo ocioso. Eles são chamados de eventos 'assíncronos'. Eles são assíncronos porque desestabilizariam o Source Insight se uma macro escrita pelo usuário fosse chamada no momento exato em que o evento ocorreu.
fonte
Se o código for síncrono (ou sincronizado), significa que cada parte do código é executada em ordem, sequencialmente, e a próxima parte do código não pode ser executada até que a anterior seja concluída. A maior parte do código é normalmente síncrona.
Se o código for assíncrono (ou assíncrono), significa que o código pode ser executado separadamente e independentemente de outro código. Se houver código assíncrono no meio de um monte de código de sincronização, no contexto desta questão específica, o código assíncrono será executado apenas quando seu evento for disparado, independentemente de onde você o colocou no código de sincronização. Ele é completamente separado e independente do código de sincronização e é executado sempre que seu evento diz, não apenas quando a parte anterior do código termina de ser executada. Alguns exemplos disso seriam para código executado em um intervalo de tempo, depois que um arquivo é salvo com sucesso, depois que uma solicitação da web é enviada, quando o usuário clica em um botão ou depois que uma imagem é carregada.
fonte