Cómo hacer programación asincrónica con nodejs
Actualización, la razón por la que te dejo jugar con AJAX es porque quiero que experimentes la asincronía, no porque quiero que entiendas el método de implementación del mecanismo AJAX, porque AJAX es una asincrónica muy típica y simple. escenario Por ejemplo:
Ejecutar
Ejecutar una función -> Ejecutar declaraciones A, B, C, D -> Iniciar una solicitud asincrónica en la declaración D y registrar un evento de devolución de llamada con el. motor -> Ejecutar E, F, G
->Salga del bloque de funciones, el motor Bucle... Bucle... Bucle En este momento, la solicitud asincrónica obtiene la Respuesta y la registrada previamente. Se ejecuta la devolución de llamada.
@VILIC VANE
también mencionó que, de hecho, Node.js está diseñado principalmente para hacer frente a la web convencional.
La aplicación tiene muchas E/S esperando y la CPU está inactiva La solución derivada del escenario y, arquitectónicamente, su backend tiene un paquete de trabajo subyacente. Siempre que tenga una operación de E/S como addUser
, se entregarán a The. El trabajador se ejecuta para lograr el propósito de ceder el derecho de ejecución de la función actual lo antes posible. Después de registrar la devolución de llamada con el motor, el identificador del evento de E/S se verificará internamente a través del evento. sondeo. Cuando el identificador muestra que la operación del evento se ha completado, se ejecuta la devolución de llamada registrada.
Entonces, suponiendo que alguien (según el título, simplifique el escenario, solo hay 2 personas) solicita addUser(A) y userList(B) al mismo tiempo, la solicitud de B estará en Después de ejecutar todo El código de sincronización dentro de la solicitud de A, se ejecuta. Incluso si el trabajador todavía está realizando la operación de E/S addUser
en este momento, el motor no suspenderá ni esperará al usuario B. Es por eso que un solo nodo de Node.js aún puede tener una gran capacidad de carga.
En cuanto a qué tipo de código es asincrónico, puede saber cómo usar el módulo fs en el documento del nodo. La forma general es la siguiente.
module.method( args [,callback] )
Por supuesto, hay un caso más extremo. Supongamos que la base de datos que está utilizando es una copia y el controlador se basa en la sincronización. Entonces B debería esperar todo el tiempo que quiera, tomar una taza de té bajo la sombra de un árbol, jugar al ajedrez y saludar a C, D, E, F y G detrás de él~
I Te recomiendo que vayas a jugar primero. Aprenda sobre programación asincrónica a través de AJAX front-end, experimente la "sensación" de la programación asincrónica y luego lea un libro llamado "Programación asincrónica de JavaScript".
Node.js
es un marco creado en base al modelo basado en eventos. Su característica típica es programar eventos a través de un sondeo de eventos integrado. En términos generales, node.js. Los controladores
se basan todos en una implementación asincrónica, por lo que en situaciones reales, Node.js puede procesar las dos solicitudes de A para enviar un blog y B para registrar un usuario al mismo tiempo.
al identificador y envía las respuestas del navegador respectivamente de acuerdo con los eventos de procesamiento de la operación real.
Por supuesto, suponiendo que escriba un código de sincronización que lleve mucho tiempo en el código comercial (por ejemplo, si escribe directamente un bucle
while(true), Node die), Debido a la limitación de un solo subproceso del propio JavaScript, toda la aplicación se bloqueará y los eventos/programas posteriores no se procesarán hasta que se complete la ejecución del código. Por esta razón, generalmente no recomendamos a gran escala. los cálculos se realizan en la capa Node.js (la eficiencia de cálculo de JS en sí es demasiado baja, lo que hará que el rendimiento del nodo se reduzca considerablemente) y tiende a implementarse mediante extensiones de C++.