Definizione di "evento asincrono" di facile comprensione? [chiuso]


88

Ho incontrato molto questo termine e, anche dopo aver cercato su Google, non riesco ancora a capire cosa significhi esattamente. Esiste una definizione di facile comprensione (idealmente con esempi) di cosa sia un evento asincrono che qualcuno può fornire?

Grazie!

Risposte:


422

Esempio non di programmazione:

Sincrono Vuoi una pizza per cena e sei fuori dal tipo congelato. Quindi devi smettere di giocare a WOW, il che sconvolge la tua gilda. Vai in cucina, fai l'impasto, lo ricopri di salsa, aggiungi il formaggio e soffoca il tuo condimento di pancetta preferito. Hai appena trascorso 20 minuti del tuo tempo a preparare la pizza con altri 10 minuti nel forno. Il timer emette un segnale acustico e tu tiri fuori la torta calda. Puoi sederti di nuovo davanti al tuo computer, mangiare la pizza e continuare con il tuo raid.

Asincrono Vuoi una pizza per cena mentre giochi a WOW. Apri una finestra del browser sul tuo quinto monitor. Caricate il sito Web di Pizza e ordinate la vostra pizza al bacon extra di formaggio con un lato di salsa all'aglio e grasso di pancetta. Torni al tuo raid e dopo 20 minuti suona il campanello. Prendi la pizza. Ti siedi di nuovo davanti al tuo computer, mangi la pizza e continui con il tuo raid.

Allora qual è la differenza? In un modo sprechi 20-30 minuti di prezioso tempo WOW, nell'altro sprechi $ 20 più la mancia.


53
Sono triste di trovarlo così divertente.
Denis Hoctor

3
Devo ammettere che questa potrebbe essere la migliore spiegazione non di programmazione che ho visto da molto tempo! ottimo esempio!
Iban Dominguez Noda

Capisco e questa risposta mi aiuta a capirlo, ma voglio la pizza adesso = / e la richiesta non continuerà finché non avrò la pizza -_-
JMASTER B

Adoro gli "esempi non di programmazione" !!
Cynthia Sanchez

@epascarello Il lato divertente funziona davvero bene !!! Per non parlare, è chiaro da capire. Devo contattarti per un progetto
Omar

19

La tua pagina viene consegnata dal server a un browser client, da qualche parte in Internet. Il browser ha disegnato la pagina su uno schermo e qualcuno - o qualcosa - la sta guardando. È un gioco d'attesa. Gli occhi si spostano avanti e indietro, assorbendo questo o quel dettaglio con rapidi salti, schizzando di lato di tanto in tanto, lontano dallo schermo, per indagare sulle distrazioni nell'ambiente. L'orologio ticchetta. La pagina si illumina in modo soffuso, passivo, mentre l'utente rimane inattivo, la mano liberamente drappeggiata su un mouse, il collo piegato verso il basso e gli occhi sempre più intenti a qualcosa di invitante che la tua pagina ha da offrire.

All'improvviso, senza alcun preavviso, il cursore inizia a muoversi mentre la mano del mouse si irrigidisce leggermente e inizia a spingere la piccola protuberanza di plastica sulla superficie ruvida del tavolo. Mentre il mouse si muove, il suo surrogato sullo schermo si muove a imitazione ravvicinata, sfiorando immagini interessanti e commenti spiritosi nel contenuto della tua pagina. Alla fine viene presa una decisione, il movimento si interrompe, un muscolo o due si contraggono leggermente e il pulsante del mouse viene premuto da un dito insistente. Il microinterruttore nel mouse innesca un impulso elettronico e improvvisamente il browser viene informato di quello che è successo: un clic del mouse.

In tutto ciò, tutto ciò che l'utente ha fatto guardando la pagina è accaduto in un modo del tutto imprevedibile al browser, a qualsiasi codice client nella tua pagina web, a qualsiasi cosa residente sui tuoi server. Non c'era un "tempo di attesa" conoscibile tra le azioni umane. Le azioni, quindi, così come trasmesse dall'attrezzatura agganciata al computer dell'utente, sono avvenute quando sono avvenute e non secondo un orologio prevedibile, ovvero sono avvenute in modo asincrono .


3
+1 Bella storia :) molto invitante ... mi ha fatto muovere il mouse e fare clic sulla freccia "voto su". Ed ecco di nuovo l'evento asincrono ...
Felix Kling

1
Ottimo esempio, la scelta di un evento del browser è semplicemente fantastica!
sjsam

18

Pensa alla fine di un colloquio e il ragazzo dice: "Non chiamateci, ti chiameremo". Questa è l'essenza di un evento asincrono.

Normalmente si definiscono le funzioni e si chiamano le funzioni in modo esplicito. Il tuo programma ha una struttura in cui inizia dalla riga 1, quindi dalla riga 2, e ad eccezione di alcuni codici condizionali e iterazioni, chiamate di funzioni, ecc., Esiste una struttura semplice, lineare e sincrona.

Ma in alcuni casi hai azioni che vengono attivate da eventi al di fuori del controllo diretto del programma, cose che provengono dall'esterno del programma, come eventi dell'interfaccia utente (l'utente fa clic con il mouse) o un evento di rete (qualcuno cerca di connettersi a il tuo server). Il tuo codice non genera questi eventi direttamente. Vengono generati al di fuori del programma, spesso dal sistema operativo in base al monitoraggio dei dispositivi dell'interfaccia utente e di altri sistemi. Questi sono chiamati eventi asincroni.

Ricorda solo: "Non chiamarci, ti chiameremo"


12

"Nella programmazione, gli eventi asincroni sono quelli che si verificano indipendentemente dal flusso del programma principale. Le azioni asincrone sono azioni eseguite in uno schema non bloccante, che consente al flusso del programma principale di continuare l'elaborazione."

"Con Ajax, le applicazioni web possono recuperare i dati dal server in modo asincrono in background senza interferire con la visualizzazione e il comportamento della pagina esistente."

Quando fai clic su Modifica e Salva su SO, avviene in modo asincrono.


12

Un evento asincrono è un evento che viene eseguito all'esterno del thread principale dell'applicazione.

Il modo migliore per capire è confrontare con eventi che vengono eseguiti in modo sincrono. L'esempio più tipico sarebbe il caricamento di una pagina web.

Quando sei andato su questa pagina, hai fatto clic su un collegamento e hai atteso il caricamento della pagina e non sei stato in grado di interagire o utilizzare questa pagina fino al termine del caricamento. Al contrario, se questa pagina dovesse avere un evento AJAX (che è JavaScript asincrono e evento XML) associato a qualche azione dell'utente, questa pagina caricherà alcuni dati da un'altra fonte in modo asincrono, in parallelo (teoricamente) con qualsiasi altra azione in corso.

Esempio con due eventi sincroni (A e B): il primo A fa qualcosa. Quando A ha finito B fa qualcosa.

Esempio con due eventi asincroni (A e B): Sia A che B fanno qualcosa allo stesso tempo e nessuno dei due eventi attende l'altro.


7

Ecco un esempio di un'operazione asincrona in javascript (devi avere la tua console javascript aperta)

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

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

La chiamata a console.log('Two!')verrà eseguita senza bloccare il resto del codice successivo.

In uno scenario reale, sostituisci setTimeout con qualcuno che fa clic su un pulsante in una pagina web. La risposta al clic del pulsante avverrà alla fine, senza bloccare l'esecuzione di altro codice come il rendering della pagina.


5

In poche parole, significa qualcosa che si verifica dopo un periodo di tempo sconosciuto, quindi non aspettarti risultati immediati.

Ad esempio, "Mamma, posso avere cinque dollari?"

Tendo la mano per i soldi mi aspetto che lei risponda immediatamente dandomi dei soldi (sincrono).

Realisticamente, mi guarderà per un momento o due, e poi deciderà di rispondere quando vuole (asincrono).


2

Quando due eventi diversi si verificano separatamente l'uno dall'altro, non puoi farlo

task1
task2

senza controllare che sia task1veramente finito.


1

Gli eventi asincroni sono quegli eventi che non sappiamo quando si verificheranno in futuro, ad esempio quando il server viene richiesto per un file che non sappiamo quando soddisferà la nostra richiesta o eventi dell'interfaccia utente che non sappiamo quando l'utente lo farà fare clic su un pulsante o su un altro elemento dell'interfaccia utente, ma nonostante ciò si verificano altre cose sulla pagina o sull'applicazione, non blocca nulla, ad esempio la pagina è disattivata per tutta l'interfaccia utente fino a quando un file dal server non arriva o si verifica un evento tutte le cose sono indipendenti questo è il potere degli eventi asincroni, diciamo semplicemente eventi indipendenti


0

Vs sincrono Eventi asincroni

Alcuni gestori di eventi vengono chiamati immediatamente quando si verifica l'evento. Questi sono chiamati eventi "sincroni". Un esempio è DocumentNew. Viene chiamato non appena l'utente crea un nuovo documento.

Tuttavia, alcuni eventi vengono richiamati subito dopo il verificarsi dell'evento, in genere dopo un breve periodo di inattività. Questi sono chiamati eventi "asincroni". Sono asincrone perché destabalizzerebbe Source Insight se una macro scritta dall'utente venisse chiamata nel momento esatto in cui si è verificato l'evento.


0

Se il codice è sincrono (o sincronizzato), significa che ogni parte di codice viene eseguita in ordine, in sequenza, e la parte di codice successiva non può essere eseguita fino al completamento della parte precedente. La maggior parte del codice è in genere sincrono.

Se il codice è asincrono (o asincrono), significa che il codice può essere eseguito separatamente e indipendentemente da altro codice. Se è presente codice asincrono nel mezzo di un gruppo di codice di sincronizzazione, nel contesto di questa particolare domanda, il codice asincrono verrà eseguito solo quando il suo evento viene attivato, indipendentemente da dove lo metti nel codice di sincronizzazione. È completamente separato e indipendente dal codice di sincronizzazione e viene eseguito ogni volta che il suo evento lo richiede, non solo quando la parte di codice precedente è stata eseguita. Alcuni esempi potrebbero essere il codice che viene eseguito a intervalli di tempo, dopo che un file è stato salvato correttamente, dopo che è stata inviata una richiesta Web, quando l'utente fa clic su un pulsante o dopo il caricamento di un'immagine.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.