javascript - nexttick - node js for loop
Definición fácil de entender de "evento asíncrono" (11)
Me he encontrado con este término mucho, e incluso después de buscar en Google, todavía no puedo entender qué significa exactamente. ¿Hay alguna definición fácil de entender (idealmente con ejemplos) de lo que un evento asincrónico puede proporcionar alguien?
¡Gracias!
"En la programación, los eventos asíncronos son aquellos que ocurren independientemente del flujo principal del programa. Las acciones asíncronas son acciones ejecutadas en un esquema no bloqueante, lo que permite que el flujo del programa principal continúe el procesamiento".
"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 asíncrona.
Aquí hay un ejemplo de una operación asíncrona en JavaScript (debe tener su consola de 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 sucede después.
En un escenario real, reemplace setTimeout con alguien haciendo clic en un botón en una página web. La respuesta al clic del botón ocurrirá eventualmente, sin bloquear la ejecución de otro código, como la representación de la página.
Cuando dos eventos diferentes ocurren por separado el uno del otro, entonces no puedes hacer
task1
task2
sin verificar que la task1
realmente haya terminado.
Ejemplo de no programación:
Sincrónico Quieres una pizza para la cena y estás fuera del congelado. Entonces debes dejar de jugar WOW, lo que molesta a tu gremio. Vas a la cocina, preparas la masa, la cubres con salsa, agregas el queso y lo sofocas con tocino. Usted 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 la tarta caliente. Puedes sentarte frente a tu computadora, comer la pizza y continuar con tu ataque.
Asíncrono Quieres una pizza para la cena mientras juegas WOW. Abre una ventana del navegador en su quinto monitor. Cargue el sitio web de Pizza y pida su pizza de tocino cursi extra con un lado de salsa de ajo con grasa de tocino. Vuelves a tu ataque y después de 20 minutos suena el timbre de la puerta. Tú obtienes la pizza Te vuelves a sentar frente a tu computadora, comes la pizza y continúas con tu ataque.
Entonces cuál es la diferencia? Una forma de perder 20-30 minutos de tiempo precioso WOW, de la otra forma desperdicia $ 20 más propina.
En pocas palabras, significa algo que ocurre después de una cantidad desconocida de tiempo, por lo tanto, no espere resultados inmediatos.
Por ejemplo, "Mamá, ¿puedo tener cinco dólares?"
Extendiendo mi mano por el dinero, espero que responda de inmediato dándome dinero (sincrónico).
Realísticamente, ella me mirará por un momento o dos, y luego decidirá responder cuando quiera (asincrónica).
Los eventos asíncronos son aquellos eventos que no sabemos cuándo ocurrirán en el futuro, por ejemplo, cuando se solicita un servidor para un archivo que no conocemos cuando cumplirá con nuestra solicitud o eventos de UI que no sabemos cuando el usuario lo hará. haga clic en un botón u otro elemento de UI, pero a pesar de que están sucediendo otras cosas en la página o aplicación, no bloquea nada, digamos que la página se oscureció toda la interfaz de usuario hasta que algún archivo del servidor no llega o sucede algún evento, todo es independiente este es el poder de los eventos asincrónicos, simplemente diga eventos independientes
Piense en el final de una entrevista y el tipo dice: "No nos llame, lo llamaremos". Esa es la esencia de un evento asincrónico.
Normalmente define funciones y llama funciones explícitamente. Su programa tiene una estructura donde 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 sincrónica, lineal y simple.
Pero en algunos casos tiene acciones que se desencadenan por eventos fuera del control directo del programa, cosas que provienen del exterior del programa, como eventos de interfaz de usuario (el usuario hace clic en el mouse) o un evento de red (alguien intenta conectarse a tu servidor). Su código no genera estos eventos directamente. Se generan fuera de su programa, a menudo por el sistema operativo en función de su supervisión de los dispositivos de interfaz de usuario y otros sistemas. Estos se llaman eventos asincrónicos.
Solo recuerda, "No nos llames, te llamaremos"
Si el código es sincrónico (o sincronización), significa que cada fragmento de código se ejecuta en orden, secuencialmente, y el siguiente fragmento de código no puede ejecutarse hasta que se complete el anterior. La mayoría del código es típicamente sincrónico.
Si el código es asíncrono (o asíncrono), significa que el código puede ejecutarse 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 desencadene su evento, independientemente de dónde se encuentre en el código de sincronización que lo coloque. Está completamente separado e independiente del código de sincronización y se ejecuta siempre que su evento lo indique, no solo cuando la pieza anterior de código se ejecuta. Algunos ejemplos de esto serían códigos que se ejecutan en un intervalo temporizado, después de que un archivo se guarda correctamente, después de que se envía una solicitud web, cuando el usuario hace clic en un botón o después de que se carga una imagen.
Sincrónico vs. Eventos asincrónicos
Algunos controladores de eventos se llaman inmediatamente cuando ocurre el evento. Estos se llaman eventos ''sincrónicos''. Un ejemplo es DocumentNew. Se llama tan pronto como el usuario crea un documento nuevo.
Sin embargo, algunos eventos se llaman poco después de que ocurre el evento, generalmente después de una breve cantidad de tiempo de inactividad. Estos se llaman 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.
Su página se entrega 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, tomando en 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 ambiente. El reloj marca. La página se ilumina de forma suave, pasiva, mientras el usuario permanece inactivo, con la mano ligeramente extendida sobre el mouse, el cuello doblado hacia abajo y los ojos cada vez más concentrados en algo que invita a su página.
De repente, sin ninguna advertencia, el cursor comienza a moverse a medida que la mano del mouse se pone rígida y comienza a empujar el pequeño golpe plástico sobre la superficie áspera de la mesa. A medida que el mouse se mueve, su sustituto en la pantalla se mueve en una imitación cercana, rozando imágenes interesantes y comentarios ingeniosos en el contenido de la página. Finalmente, se toma una decisión, el movimiento se detiene, un músculo o dos se contraen levemente y el botón del mouse se presiona con un dedo insistente. El microinterruptor en el mouse desencadena 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 miraba la página ha pasado de una forma totalmente impredecible para el navegador, para cualquier código de cliente en su página web, para cualquier cosa que resida en sus servidores. No había ningún "tiempo de espera" cognoscible entre las acciones humanas. Las acciones, por lo tanto, transmitidas por el equipo enganchado a la computadora del usuario, ocurrieron cuando sucedieron y no según un reloj predecible, es decir, ocurrieron de forma asincrónica .
Un evento asincrónico es un evento que se ejecuta fuera del subproceso principal de la aplicación.
La mejor manera de entender es comparar los eventos que se ejecutan sincrónicamente. El ejemplo más típico sería cargar una página web.
Cuando accedió a esta página, hizo clic en un enlace y esperó a que la página se cargara y no pudo interactuar ni usar esta página hasta que no se terminó de cargar. Para contrastar, si esta página fuera a tener un evento AJAX (que es un evento XML y JavaScript asíncrono) 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 otras acciones en curso.
Ejemplo con dos eventos sincrónicos (A y B): First 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.