¿Definición fácil de entender de "evento asincrónico"? [cerrado]

88

Me he encontrado con este término mucho, e incluso después de buscar en Google, todavía no puedo entender qué significa exactamente. ¿Existe alguna definición fácil de entender (idealmente con ejemplos) de lo que es un evento asincrónico que alguien puede proporcionar?

¡Gracias!

Jasonbogd
fuente

Respuestas:

422

Ejemplo de no programación:

Sincrónico Quieres una pizza para cenar y estás fuera del tipo congelado. Así que tienes que dejar de jugar WOW, lo que altera a tu gremio. Vas a la cocina, haces la masa, la cubres con salsa, le agregas el queso y lo sofocas con tu tocino favorito. Acaba de pasar 20 minutos de su tiempo haciendo la pizza con otros 10 minutos en el horno. El temporizador emite un pitido y sacas el pastel caliente. Puede volver a sentarse frente a su computadora, comer la pizza y continuar con su incursión.

Asincrónico Quieres una pizza para cenar mientras juegas WOW. Abre una ventana del navegador en su quinto monitor. Carga el sitio web de Pizza y pide su pizza de tocino extra cursi con un lado de salsa de ajo y grasa de tocino. Vuelve a su incursión y después de 20 minutos suena el timbre de la puerta. Obtienes la pizza. Te sientas frente a tu computadora, te comes la pizza y continúas con tu incursión.

Entonces cuál es la diferencia? Una forma de perder 20-30 minutos de precioso tiempo WOW, la otra forma de perder $ 20 más propina.

epascarello
fuente
53
Me siento triste de encontrar esto tan divertido.
Denis Hoctor
3
¡Tengo que admitir que esta podría ser la mejor explicación no relacionada con la programación que he visto en mucho tiempo! gran ejemplo!
Iban Dominguez Noda
Lo entiendo y esta respuesta me ayuda a entenderlo, pero quiero pizza ahora = / y la solicitud no continuará hasta que obtenga pizza -_-
JMASTER B
Me encantan los "ejemplos que no son de programación".
Cynthia Sanchez
@epascarello ¡¡¡El lado divertido funciona muy bien !!! Sin mencionar que es claro de entender. Necesito contactarte para un proyecto
Omar
19

Su página se envía desde el servidor a un navegador de cliente, en algún lugar de Internet. El navegador ha dibujado la página en una pantalla y alguien, o algo , la está mirando. Es un juego de espera. Los ojos se mueven hacia adelante y hacia atrás, captando este o aquel detalle en saltos rápidos, lanzándose hacia un lado de vez en cuando, lejos de la pantalla, para investigar las distracciones en el entorno. El reloj corre. La página se ilumina suavemente, pasivamente, mientras el usuario permanece inactivo, con la mano colocada sobre un mouse, el cuello inclinado hacia abajo y los ojos cada vez más atentos a algo atractivo que su página tiene para ofrecer.

De repente, sin previo aviso, el cursor comienza a moverse cuando la mano del mouse se pone ligeramente rígida y comienza a empujar el pequeño bulto de plástico sobre la superficie rugosa de la mesa. A medida que se mueve el mouse, su sustituto en la pantalla se mueve en una imitación cercana, rozando imágenes interesantes y comentarios ingeniosos en el contenido de su página. Finalmente, se toma una decisión, el movimiento se detiene, uno o dos músculos se contraen ligeramente y un dedo insistente presiona el botón del ratón. El microinterruptor del mouse activa un impulso electrónico y, de repente, el navegador se da cuenta de lo que sucedió: un clic del mouse.

En todo eso, todo lo que el usuario ha hecho mientras mira la página ha sucedido de una manera totalmente impredecible para el navegador, para cualquier código de cliente en su página web, para cualquier cosa residente en sus servidores. No hubo un "tiempo de espera" conocido entre las acciones humanas. Las acciones, por lo tanto, transmitidas por el equipo enganchado a la computadora del usuario, ocurrieron cuando ocurrieron y no según un reloj predecible, es decir, ocurrieron de forma asincrónica .

Puntiagudo
fuente
3
+1 Bonita historia :) muy atractiva ... me hizo mover el mouse y hacer clic en la flecha "votar a favor". Y aquí está el evento asincrónico de nuevo ....
Felix Kling
1
Gran ejemplo, ¡la elección de un evento de navegador es simplemente genial!
sjsam
18

Piense en el final de una entrevista y el tipo dice: "No nos llames, te llamaremos". Esa es la esencia de un evento asincrónico.

Normalmente, define funciones y llama a funciones explícitamente. Su programa tiene una estructura en la que comienza desde la línea 1, luego la línea 2, y excepto por algunos códigos e iteraciones condicionales, funciones de llamada, etc., hay una estructura simple, lineal y sincrónica.

Pero en algunos casos, tiene acciones que se desencadenan por eventos fuera del control directo del programa, cosas que provienen de fuera del programa, como eventos de interfaz de usuario (el usuario hace clic con el mouse) o un evento de red (alguien intenta conectarse a su servidor). Su código no genera estos eventos directamente. Se generan fuera de su programa, a menudo por el sistema operativo basado en su monitoreo de los dispositivos de interfaz de usuario y otros sistemas. Estos se denominan eventos asincrónicos.

Solo recuerda: "No nos llames, te llamaremos"

Rob Weir
fuente
12

"En programación, los eventos asíncronos son aquellos que ocurren independientemente del flujo del programa principal. Las acciones asíncronas son acciones ejecutadas en un esquema sin bloqueo, lo que permite que el flujo del programa principal continúe procesándose".

"Con Ajax, las aplicaciones web pueden recuperar datos del servidor de forma asincrónica en segundo plano sin interferir con la visualización y el comportamiento de la página existente".

Cuando hace clic en Editar y Guardar en SO, está sucediendo de forma asincrónica.

Dejan Marjanović
fuente
12

Un evento asincrónico es un evento que se ejecuta fuera del hilo principal de la aplicación.

La mejor forma de entenderlo es compararlo con los eventos que se ejecutan sincrónicamente. El ejemplo más típico sería cargar una página web.

Cuando fue a esta página, hizo clic en un enlace y esperó a que la página se cargara y no pudo interactuar ni utilizar esta página hasta que terminó de cargarse. Por el contrario, si esta página tuviera un evento AJAX (que es un evento JavaScript y XML asincrónico) asociado con alguna acción del usuario, esta página cargaría algunos datos de otra fuente de forma asincrónica, en paralelo (teóricamente) con cualquier otra acción en curso.

Ejemplo con dos eventos síncronos (A y B): Primero A hace algo. Cuando A termina, B hace algo.

Ejemplo con dos eventos asincrónicos (A y B): Tanto A como B hacen algo al mismo tiempo y ninguno de los eventos espera al otro.

chaimp
fuente
7

Aquí hay un ejemplo de una operación asincrónica en javascript (necesita tener su consola javascript abierta)

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

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

La llamada a console.log('Two!')se ejecutará sin bloquear el resto del código que suceda después.

En un escenario real, reemplace setTimeout con alguien que haga clic en un botón en una página web. La respuesta al clic del botón se producirá eventualmente, sin bloquear la ejecución de otro código, como la representación de la página.

statenjason
fuente
5

En pocas palabras, significa algo que ocurre después de un período de tiempo desconocido, así que no espere resultados inmediatos.

Por ejemplo, "Mamá, ¿puedo tener cinco dólares?"

Extendiendo mi mano por dinero, estoy esperando que ella responda inmediatamente dándome dinero (sincrónico).

Siendo realistas, ella me mirará por un momento o dos, y luego decidirá responder cuando quiera (asincrónico).

Kai
fuente
2

Cuando dos eventos diferentes ocurren por separado, por lo que no puede hacer

task1
task2

sin comprobar que task1realmente terminó.

Teson
fuente
1

Los eventos asincrónicos son aquellos eventos que no sabemos cuándo ocurrirá en el futuro, por ejemplo, cuando se solicita el servidor para algún archivo, no sabemos cuándo cumplirá nuestra solicitud o eventos de IU que no sabemos cuándo el usuario lo hará. haga clic en un botón u otro elemento de la interfaz de usuario, pero a pesar de que están sucediendo otras cosas en la página o la aplicación, no bloquea nada, diga que la página atenuó toda la interfaz de usuario hasta que no llegue algún archivo del servidor o esté sucediendo algún evento, todas las cosas son independientes este es el poder de los eventos asincrónicos, simplemente diga eventos independientes

BlackHawk
fuente
0

Sincrónico vs. Eventos asincrónicos

Algunos controladores de eventos se llaman inmediatamente cuando ocurre el evento. Estos se denominan eventos "sincrónicos". Un ejemplo es DocumentNew. Se llama tan pronto como el usuario crea un nuevo documento.

Sin embargo, algunos eventos se llaman poco después de que ocurra el evento, generalmente después de un breve período de inactividad. Estos se denominan eventos "asincrónicos". Son asincrónicos porque desestabilizaría Source Insight si se llamara a una macro escrita por el usuario en el momento exacto en que ocurrió el evento.

Vitthal Walunj
fuente
0

Si el código es síncrono (o sincronizado), significa que cada fragmento de código se ejecuta en orden, secuencialmente, y el siguiente fragmento de código no se puede ejecutar hasta que se complete el anterior. La mayoría de los códigos suelen ser sincrónicos.

Si el código es asincrónico (o asincrónico), significa que el código se puede ejecutar por separado e independientemente de otro código. Si hay un código asíncrono en medio de un montón de código de sincronización, en el contexto de esta pregunta en particular, el código asíncrono solo se ejecutará cuando se active su evento, independientemente de en qué parte del código de sincronización lo coloque. Es completamente separado e independiente del código de sincronización y se ejecuta siempre que su evento lo indique, no solo cuando el fragmento de código anterior termina de ejecutarse. Algunos ejemplos de esto serían para el código que se ejecuta en un intervalo de tiempo, después de que un archivo se haya guardado correctamente, después de que se envíe una solicitud web, cuando el usuario haga clic en un botón o después de que se cargue una imagen.

Grant Gryczan
fuente