Devoluciones de llamada de JavaScript: ¿asincrónicas o no?
Las devoluciones de llamada de JavaScript no son universalmente asincrónicas. En ciertos escenarios, como el ejemplo que proporcionó con las funciones addOne y simpleMap, el código funciona sincrónicamente.
JavaScript asíncrono en el navegador
Funciones AJAX basadas en devolución de llamada en jQuery suelen ser asíncronos porque implican solicitudes XHR (XMLHttpRequest). De forma predeterminada, las solicitudes XHR en los navegadores son asíncronas, lo que permite la ejecución continua de scripts mientras se procesa la solicitud.
JavaScript asíncrono en Node.js
En Node.js, El comportamiento asincrónico generalmente surge de operaciones de entrada/salida (E/S), como E/S de archivos, Process.nextTick, setTimeout y setInterval. Las llamadas a bases de datos basadas en devolución de llamadas con MongoDB/Mongoose son asincrónicas debido a las operaciones de E/S subyacentes involucradas en la interacción con la base de datos. arraigado en el entorno. En el navegador, las funciones de devolución de llamada asociadas con las solicitudes XHR son inherentemente asíncronas. En Node.js, las devoluciones de llamada vinculadas a operaciones de E/S también son asincrónicas.
Funciones asincrónicas personalizadas
Sin depender únicamente de funciones ambientales específicas, puede lograr un comportamiento asincrónico aprovechando las promesas de ES6. Las promesas proporcionan un mecanismo a nivel de lenguaje para definir operaciones asincrónicas. Las funciones de devolución de llamada adjuntas a las promesas (vía then y catch) siempre se ejecutan de forma asincrónica, lo que garantiza que el código que sigue a la promesa no se bloquee.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3