Fácil de entender a definição de “evento asynchronous”?

Eu encontrei este termo muito, e mesmo depois de pesquisar no Google, ainda não consigo entender o que exatamente isso significa. Existe alguma definição fácil de entender (idealmente com exemplos) do que um evento asynchronous é aquele que alguém pode fornecer?

Obrigado!

Exemplo de não programação:

Synchronous 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 até a cozinha, faz a massa, cobre com molho, acrescenta o queijo e suga sua cobertura favorita de bacon. Você acabou de passar 20 minutos do seu tempo fazendo a pizza com mais 10 minutos no forno. O cronômetro emite um bipe e você puxa a torta quente para fora. Você pode se sentar na frente do computador, comer a pizza e continuar com o ataque.

Assíncrono Você quer uma pizza para o jantar enquanto estiver jogando WOW. Você abre uma janela do navegador no seu quinto monitor. Você carrega o site da Pizza e pede a sua pizza extra de bacon com um molho de bacon. Você volta ao seu ataque e depois de 20 minutos a campainha toca. Você pega a pizza. Você senta na frente do computador, come a pizza e continua com o seu ataque.

Então qual é a diferença? Uma maneira de desperdiçar 20 a 30 minutos de precioso tempo WOW, a outra maneira de desperdiçar US $ 20 mais gorjeta.

Sua página é entregue do servidor para um navegador do cliente, em algum lugar na Internet. O navegador desenhou a página em uma canvas e alguém – ou alguma coisa – está olhando para ela. É um jogo de espera. Os olhos se movem para frente e para trás, absorvendo esse ou aquele detalhe em saltos rápidos, triggersndo para o lado de vez em quando, longe da canvas, para investigar distrações no ambiente. O relógio marca. A página brilha suavemente, passivamente, enquanto o usuário paira inativo, a mão solta sobre um mouse, o pescoço inclinado para baixo e os olhos cada vez mais concentrados em algo convidativo que sua página tem a oferecer.

De repente, sem qualquer aviso, o cursor começa a se mover quando a mão do mouse endurece um pouco e começa a empurrar a pequena protuberância de plástico sobre a superfície áspera da mesa. Conforme o mouse se move, seu substituto na canvas se move em imitação, passando por imagens interessantes e observações espirituosas no conteúdo de sua página. Eventualmente, uma decisão é tomada, o movimento faz uma pausa, um músculo ou dois se contraem levemente e o botão do mouse é pressionado por um dedo insistente. O micro-interruptor do mouse triggers um impulso eletrônico e, de repente, o navegador fica ciente do que aconteceu: um clique do mouse.

Em tudo isso, tudo sobre o que o usuário fez enquanto olhava para a página aconteceu de uma maneira totalmente imprevisível para o navegador, para qualquer código de cliente em sua página da Web, para qualquer coisa residente em seus servidores. Não havia “tempo de espera” entre as ações humanas. As ações, portanto, transmitidas pelo equipamento ligado ao computador do usuário, aconteciam quando aconteciam e não de acordo com um relógio previsível – isto é, aconteciam de forma assíncrona .

Pense no final de uma entrevista, e o cara diz: “Não ligue para nós, ligaremos para você”. Essa é a essência de um evento asynchronous.

Normalmente você define funções e chama funções explicitamente. Seu programa tem uma estrutura onde começa a partir da linha 1, depois da linha 2, e exceto por algum código condicional e iterações, funções de chamada, etc., existe uma estrutura simples, linear e síncrona.

Mas em alguns casos você tem ações que são acionadas por events fora do controle direto do programa, coisas que vêm de fora do programa, como events de interface do usuário (usuário clica o mouse) ou um evento de rede (alguém tenta se conectar a seu servidor). Seu código não gera esses events diretamente. Eles são gerados fora do programa, geralmente pelo SO, com base no monitoramento dos dispositivos de interface do usuário e de outros sistemas. Estes são chamados de events asynchronouss.

Apenas lembre-se: “Não ligue para nós, ligaremos para você”

“Na programação, os events asynchronouss são aqueles que ocorrem independentemente do stream do programa principal. As ações assíncronas são ações executadas em um esquema sem bloqueio, permitindo que o stream do programa principal continue o processamento.”

“Com o Ajax, os aplicativos da Web podem recuperar os 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 está acontecendo de forma assíncrona.

Um evento asynchronous é um evento que é executado fora do encadeamento principal do aplicativo.

A melhor maneira de entender é comparar com events que são executados de forma síncrona. O exemplo mais típico seria carregar uma página da web.

Quando você foi para esta página, clicou em um link e esperou que a página fosse carregada e não pôde interagir ou usar esta página até que ela terminasse de ser carregada. Para contrastar, se essa página tivesse um evento AJAX (que é um evento asynchronous JavaScript e XML) associado a alguma ação do usuário, essa página carregaria alguns dados de outra fonte de forma assíncrona – em paralelo (teoricamente) com qualquer outra ação.

Exemplo com dois events síncronos (A e B): primeiro A faz alguma coisa. Quando A termina, B faz alguma coisa.

Exemplo com dois events asynchronouss (A e B): A e B fazem algo ao mesmo tempo e nenhum evento aguarda o outro.

Aqui está um exemplo de uma 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 outra execução de código, como renderização de página.

Simplificando, significa algo que ocorre após um período de tempo desconhecido, portanto, não espere resultados imediatos.

Por exemplo, “Mãe, posso ter cinco dólares?”

Colocando minha mão para fora, estou esperando que ela responda imediatamente, me dando dinheiro (síncrono).

Realisticamente, ela vai olhar para mim por um momento ou dois, e então decidir responder quando quiser (assíncrona).

Quando dois events diferentes ocorrem separadamente uns dos outros, então você não pode fazer

 task1 task2 

sem verificar que a task1 realmente terminou.

Eventos asynchronouss são aqueles events que não sabemos quando serão ocorridos no futuro, por exemplo, quando o servidor é solicitado para algum arquivo que não sabemos quando ele atenderá à nossa solicitação ou events da interface do usuário que não sabemos quando o usuário clique em um botão ou outro elemento da interface do usuário, mas apesar disso outras coisas na página ou aplicativo está acontecendo, ele não bloqueia nada, diz a página em cinza toda a interface do usuário até que algum arquivo do servidor não esteja chegando ou algum evento esteja acontecendo. esse é o poder dos events asynchronouss, simplesmente diga events independentes

Síncrono vs. Eventos Assíncronos

Alguns manipuladores de events são chamados imediatamente quando o evento ocorre. Estes são chamados de events ‘síncronos’. Um exemplo é DocumentNew. Ele é chamado assim que o usuário cria um novo documento.

No entanto, alguns events são chamados logo após o evento ocorrer, geralmente após um curto período de tempo ocioso. Estes são chamados de events ‘asynchronouss’. Eles são asynchronouss porque desestabilizariam o Source Insight se uma macro gravada pelo usuário fosse chamada na hora exata em que o evento ocorreu.

Se o código for síncrono (ou sincronizado), significa que cada parte do código é executada em ordem, sequencialmente, e o próximo trecho de código não pode ser executado até que o anterior seja concluído. A maioria dos códigos é tipicamente síncrona.

Se o código for asynchronous (ou asynchronous), significa que o código pode ser executado separadamente e independentemente de outro código. Se houver código asynchronous no meio de um monte de código de synchronization, sob o contexto dessa questão em particular, o código asynchronous só será executado quando o evento for acionado, independentemente de onde no código de synchronization você o colocou. Ele é completamente separado e independente do código de synchronization e é executado sempre que o evento diz, não apenas quando o código anterior é executado. Alguns exemplos disso seriam para código que é 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.