Soy nuevo en node.js, estoy tratando de correlacionar estas dos características de node.js,
node.js tiene dos tipos de funciones api, es decir, síncronas y asíncronas
node.js admite E/S sin bloqueo
Supongamos que api está haciendo una llamada síncrona, la función de E/S sin bloqueo de node.js no se utilizará, ¿verdad?
¿Modificará node.js de forma síncrona y asíncrona trabajando internamente, especialmente la característica de E/S sin bloqueo?
const fs = require('fs'); // Asynchronous function fs.readFile('data.json', 'utf8', function (err,data) { if (err) { return console.log(err); } console.log("Below is the Data from Asynchronous function call") console.log(data); }); // Synchronous function var data = fs.readFileSync('data.json','utf8'); console.log("Below is the Data from Synchronous function call") console.log(data);En nodejs:
Asynchronous I/O == non-blocking I/O Synchronous I/O == blocking I/OSi bien la asincronía y el bloqueo técnicamente no son exactamente lo mismo, esos dos términos a menudo se usan indistintamente cuando se habla de operaciones de E/S dentro de nodejs y probablemente se deba a que todas las operaciones de E/S asíncronas en nodejs también son sin bloqueo y todas las operaciones de E/S síncronas. Las operaciones O en nodejs también están bloqueando.
¿Modificará node.js de forma síncrona y asíncrona trabajando internamente?
Sí, funcionan de manera diferente internamente.
Por ejemplo, las operaciones de E/S de archivos asincrónicos utilizan un grupo de subprocesos y ejecutan la operación de archivo en un subproceso del sistema operativo separado, dejando el subproceso de Javascript libre para hacer otras cosas (ejecutar otro Javascript).
Las operaciones de archivos sincrónicos no utilizan el grupo de subprocesos. Simplemente llaman directamente a las operaciones de archivos del sistema operativo que (por el diseño de las llamadas al sistema operativo que usan) bloquearán el hilo principal hasta que se completen.