Definição fácil de entender de “evento assíncrono”? [fechadas]

88

Eu encontrei muito esse termo, e mesmo depois de pesquisar no Google, ainda não consigo entender o que exatamente significa. Existe alguma definição fácil de entender (de preferência com exemplos) do que é um evento assíncrono que alguém pode fornecer?

Obrigado!

Jasonbogd
fonte

Respostas:

422

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.

Epascarello
fonte
53
Me sinto triste por achar isso tão engraçado.
Denis Hoctor
3
Tenho que admitir que essa pode ser a melhor explicação de não programação que já vi em muito tempo! ótimo exemplo!
Iban Dominguez Noda
Eu entendi e esta resposta me ajuda a entender, mas eu quero pizza agora = / e o pedido não continuaria até eu pegar pizza -_-
JMASTER B
Eu amo "Exemplos de não programação" !!
Cynthia Sanchez
@epascarello O lado engraçado funciona muito bem !!! Sem falar que é claro entender. Preciso falar com você para um projeto
Omar
19

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 .

Pontudo
fonte
3
+1 Bela história :) muito convidativa ... me fez mover o mouse e clicar na seta "votar positivamente". E aqui está o evento assíncrono novamente ....
Felix Kling
1
Ótimo exemplo, a escolha de um evento de navegador é simplesmente excelente!
sjsam
18

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ê"

Rob Weir
fonte
12

"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."

"Com o Ajax, os aplicativos da web podem recuperar dados do servidor de forma assíncrona em segundo plano, sem interferir na exibição e no comportamento da página existente."

Quando você clica em Editar e Salvar no SO, isso acontece de forma assíncrona.

Dejan Marjanović
fonte
12

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.

chaimp
fonte
7

Aqui está um exemplo de operação assíncrona em javascript (você precisa ter seu console javascript aberto)

console.log('One!');
setTimeout(function(){console.log('Two!');},0);
//Doesn't wait
console.log('Three!');};

//OUTPUT:
//One!
//Three!
//Two!

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.

statenjason
fonte
5

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).

Kai
fonte
2

Quando dois eventos diferentes ocorrem separadamente um do outro, então você não pode

task1
task2

sem verificar se task1realmente terminou.

Teson
fonte
1

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

Falcão
fonte
0

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.

Vitthal Walunj
fonte
0

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.

Grant Gryczan
fonte