Node.js se basa en un modelo de E/S sin bloqueo basado en eventos. Este artículo analiza qué significa bloqueo y no bloqueo en Node.js.
Bloqueo: se refiere al bloqueo de operaciones posteriores hasta que finaliza la operación actual. Los métodos de bloqueo se ejecutan sincrónicamente. Sincrónicamente significa que el programa se ejecuta línea por línea. El programa espera hasta que regresa la función llamada o la operación.
Ejemplo: el siguiente ejemplo utiliza la función readFileSync() para leer archivos y demostrar el bloqueo en Node.js
index.js
const fs = require('fs'); const filepath = 'text.txt'; // Reads a file in a synchronous and blocking way const data = fs.readFileSync(filepath, {encoding: 'utf8'}); // Prints the content of file console.log(data); // This section calculates the sum of numbers from 1 to 10 let sum = 0; for(let i=1; i<=10; i++){ sum = sum + i; } // Prints the sum console.log('Sum: ', sum);
Ejecute el archivo index.js con el siguiente comando:
node index.js
Producción:
This is from text file. Sum: 55
Non-Blocking: Se refiere al programa que no bloquea la ejecución de otras operaciones. Los métodos sin bloqueo se ejecutan de forma asíncrona. Asincrónicamente significa que el programa no necesariamente puede ejecutarse línea por línea. El programa llama a la función y pasa a la siguiente operación y no espera a que regrese.
Ejemplo: El siguiente ejemplo usa la función readFile() para leer archivos y demostrar el no bloqueo en Node.js
index.js
const fs = require('fs'); const filepath = 'text.txt'; // Reads a file in a asynchronous and non-blocking way fs.readFile(filepath, {encoding: 'utf8'}, (err, data) => { // Prints the content of file console.log(data); }); // This section calculates the sum of numbers from 1 to 10 let sum = 0; for(let i=1; i<=10; i++){ sum = sum + i; } // Prints the sum console.log('Sum: ', sum);
Ejecute el archivo index.js con el siguiente comando:
node index.js
Producción:
Sum: 55 This is from text file.
Nota: En el programa sin bloqueo, la suma se imprime antes que el contenido del archivo. Esto se debe a que el programa no espera a que la función readFile() regrese y pase a la siguiente operación. Y cuando la función readFile() regresa, imprime el contenido.
Publicación traducida automáticamente
Artículo escrito por adityapande88 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA