Diferencia entre el método síncrono y asíncrono del módulo fs

NodeJS nos proporciona un módulo fs (Sistema de archivos) incorporado para varias operaciones de manejo de archivos, como leer un archivo, escribir un archivo, eliminar un archivo, etc. El módulo fs se puede instalar usando la siguiente declaración:

Sintaxis:

npm install fs --save

Nota: El npm en el comando anterior significa administrador de paquetes de Nodes desde donde se pueden instalar todas las dependencias en NodeJS.

Para usar el módulo fs, agregue la siguiente declaración en el código:

const fs = require('fs');

El módulo fs tiene diferentes operaciones para el manejo de archivos, como leer archivos, escribir archivos, agregar archivos, cerrar archivos, eliminar archivos, etc. Todas las operaciones se pueden realizar de forma sincrónica y asincrónica según los requisitos del usuario.

1. Métodos síncronos: las funciones síncronas bloquean la ejecución del programa hasta que se realiza la operación del archivo. Estas funciones también se denominan funciones de bloqueo. Los métodos sincrónicos tienen File Descriptor como último argumento. File Descriptor es una referencia a los archivos abiertos. Es un número o una identificación de referencia al archivo devuelto después de abrir el archivo usando el método fs.open() del módulo fs. Todos los métodos asíncronos pueden funcionar de forma síncrona simplemente agregando «Sync» al nombre de la función. Algunos de los métodos síncronos del módulo fs en NodeJS son:

Ejemplo 1: método de lectura síncrona

Paso 1: Vamos a crear un archivo JavaScript llamado main.js y un archivo de texto con el nombre sample.txt con la siguiente declaración:

GeeksForGeeks is a Computer Science portal.

Paso 2: agregue el siguiente código dentro del archivo main.js y ejecútelo:

main.js

var fs = require("fs");
  
// Synchronous read
console.log("Synchronous read method:");
var data = fs.readFileSync('sample.txt');
console.log("Data in the file is - " + data.toString());

Producción:

Salida del método de lectura síncrona

Ejemplo 2: método de adición síncrona

Paso 1: Vamos a crear un archivo JavaScript llamado main.js y un archivo de texto con el nombre sample.txt con la siguiente declaración:

Hello World !

Paso 2: agregue el siguiente código dentro del archivo main.js y ejecútelo:

main.js

var fs = require("fs");
  
// Synchronous read
console.log("Synchronous append method:");
  
var data = "\nGeeksForGeeks is a Computer Science portal.";
  
// Append data to file
fs.appendFileSync('sample.txt', data, 'utf8');
console.log("Data is appended to file successfully.")
  
data = fs.readFileSync('sample.txt');
console.log("Data in the file after appending is - \n" + data.toString());

Producción:

Salida del método de adición síncrona

2. Métodos asíncronos:

Las funciones asíncronas no bloquean la ejecución del programa y cada comando se ejecuta después del comando anterior, incluso si el comando anterior no ha calculado el resultado. El comando anterior se ejecuta en segundo plano y carga el resultado una vez que ha terminado de procesarse. Por lo tanto, estas funciones se denominan funciones de no bloqueo. Toman una función de devolución de llamada como último parámetro. Las funciones asíncronas generalmente se prefieren a las funciones síncronas, ya que no bloquean la ejecución del programa, mientras que las funciones síncronas bloquean la ejecución del programa hasta que haya terminado de procesarse. Algunos de los métodos asíncronos del módulo fs en NodeJS son:

Las operaciones pesadas que consumen tiempo de procesamiento, como consultar grandes cantidades de datos de una base de datos, deben realizarse de forma asíncrona, ya que aún se pueden ejecutar otras operaciones y, por lo tanto, reducir el tiempo de ejecución del programa.

Ejemplo 1: método de lectura asincrónica

Paso 1: Vamos a crear un archivo JavaScript llamado main.js y un archivo de texto con el nombre sample.txt con la siguiente declaración: 

GeeksForGeeks is a Computer Science portal.

Paso 2: agregue el siguiente código dentro del archivo main.js y ejecútelo:

main.js

var fs = require("fs");
    
// Asynchronous read
console.log("Asynchronous read method:");
fs.readFile('sample.txt', function (err, data) {
   if (err) {
      return console.error(err);
   }
   console.log("Data in the file is - " + data.toString());
});

Producción:

Salida del método de lectura asincrónica

Ejemplo 2: Método de adición asíncrono

Paso 1: Vamos a crear un archivo JavaScript llamado main.js y un archivo de texto con el nombre sample.txt con la siguiente declaración:

Hello World !

Paso 2: agregue el siguiente código dentro del archivo main.js y ejecútelo:

main.js

var fs = require("fs");
  
const data = "\nGeeksForGeeks is a Computer Science portal.";
     
// Asynchronously appending data to file
fs.appendFile('sample.txt', data, 'utf8',
    
    // Callback function
    function(err) { 
        if (err) throw err;
    
        //  If no error
        console.log("Data is appended to file successfully.")
});
  
fs.readFile('sample.txt', function (err, data) {
    if (err) {
       return console.error(err);
    }
    console.log("Data in the file after appending: \n"
        + data.toString());
 });

Producción:

Salida del método de adición asíncrono

Diferencia entre métodos asíncronos y síncronos:

No Señor

métodos sincrónicos

Métodos asíncronos

1. Las funciones síncronas se denominan funciones de bloqueo. Las funciones asíncronas se denominan funciones sin bloqueo.
2. Bloquea la ejecución del programa hasta que la operación del archivo haya terminado de procesarse. No bloquea la ejecución del programa.
3. Estas funciones toman File Descriptor como último argumento. Estas funciones toman una función de devolución de llamada como último argumento.
4. Ejemplos: fs.readFileSync(), fs.appendFileSync(), fs.writeFileSync() etc. Ejemplos: fs.readFile(), fs.appendFile(), fs.writeFile(), fs.stat() etc.                                                               

Publicación traducida automáticamente

Artículo escrito por rajsanghavi9 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *