¿Cómo operar el método fs.readdir() basado en devolución de llamada con promesas en Node.js?

El método fs.readdir() se define en el módulo Sistema de archivos de Node.js. El módulo del Sistema de Archivos es básicamente para interactuar con el disco duro de la computadora del usuario. El método readdir() se utiliza para leer el contenido de un directorio.

El método fs.readdir() se basa en la devolución de llamada. El uso de métodos de devolución de llamada genera una gran posibilidad de anidamiento de devolución de llamada o problemas infernales de devolución de llamada. Por lo tanto, para evitarlo, casi siempre nos gusta trabajar con un método basado en promesas. Usando algunos métodos adicionales de node.js, podemos operar un método basado en devolución de llamada de manera prometedora.

Sintaxis:

fs.readdir(path, options)

Nota: No se requiere devolución de llamada ya que operamos el método con promesas.

Parámetros: Este método acepta dos parámetros como se mencionó anteriormente y se describe a continuación:

  • ruta: Es una string, búfer o url que especifica la ruta al directorio, cuyo contenido intentamos leer.
  • opciones: es un parámetro opcional, aquí especificamos técnicas de codificación (predeterminado-utf8), etc.

Enfoque: el método fs.readdir() basado en la devolución de llamada. Para operarlo con promesas, primero, usamos el método promisify() definido en el módulo de utilidades para convertirlo en un método basado en promesas.

Ejemplo 1: Nombre de archivo: index.js

// Program to read file and folders of 
// the current working directory
  
// Importing File System and Utilities module
const fs = require('fs')
const util = require('util')
  
// Convert callback based methods to promise
// based methods
const readDir = util.promisify(fs.readdir)
  
// Reading current working directory
readDir(process.cwd())
// If promise resolved and datas are fetched
.then(filenames => {
  for(let filename of filenames) {
    console.log(filename)
  }
})
  
// If promise is rejected
.catch(err => {
   console.log(`Error occurs, 
   Error code -> ${err.code},
   Error No -> ${err.errno} `);
})

Implementando la misma funcionalidad usando async-await :

// Program to read file and folders of the
// current working directory
  
// Importing File System and Utilities module
const fs = require('fs')
const util = require('util')
  
// Convert callback based methods to promise
// based methods
const readDir = util.promisify(fs.readdir)
  
const readDirectory = async (path) => {
  const filenames = await readDir(path)
  for(let filename of filenames){
    console.log(filename)
  }
}
  
readDirectory(process.cwd())
// If promise is rejected
.catch(err => {
   console.log(`Error occurs, 
   Error code -> ${err.code},
   Error No -> ${err.errno}`);
})

Ejecute el archivo index.js con el siguiente comando:

node index.js

Producción:

Ejemplo 2: Nombre de archivo: index.js

// Program to read file and folders of the
// current working directory or as the path
// given by command line argument
   
// Importing File System and Utilities module
const fs = require('fs')
const util = require('util')
  
// Convert callback based methods to promise
// based methods
const readDir = util.promisify(fs.readdir)
  
// The process.cwd() gives current working directory
const targetDir = process.argv[2] || process.cwd()
   
readDir(targetDir)
   
// If promise resolved and datas are fetched
.then(filenames => {
  for(let filename of filenames) {
    console.log(filename)
  }
})
  
// If promise is rejected
.catch(err => {
  console.log(err)
})

Implementando la misma funcionalidad usando async-await :

// Program to read file and folders of the 
// current working directory or as the path
// given by command line argument
   
// Importing File System and Utilities module
const fs = require('fs')
const util = require('util')
  
// The process.cwd() gives current working directory
const targetDir = process.argv[2] || process.cwd()
  
// Convert callback based methods to promise
// based methods
const readDir = util.promisify(fs.readdir)
  
const readDirectory = async (path) => {
  const filenames = await readDir(path)
  for(let filename of filenames){
    console.log(filename)
  }
}
  
readDirectory(targetDir)
// If promise is rejected
.catch(err => {
   console.log(`Error occurs, 
   Error code -> ${err.code},
   Error No -> ${err.errno}`);
})

Ejecute el archivo index.js con el siguiente comando:

node index.js

Producción:

Publicación traducida automáticamente

Artículo escrito por hunter__js 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 *