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

El método fs.mkdir() 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 mkdir() se utiliza para crear un directorio de forma asíncrona.

El método fs.mkdir() 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.mkdir(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 un String, Buffer o URL que especifica la ruta al directorio que se tiene que crear.
  • opciones: es un parámetro opcional que afecta la salida de alguna manera según lo proporcionemos a la llamada de función o no.
    • modo: es una string o un número entero que se usa para establecer el permiso del directorio. Por defecto su valor es 0.777
    • recursivo: es un valor booleano que especifica si se deben crear o no los directorios principales. Por defecto su valor es falso.

Enfoque: el método fs.mkdir() 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

// Importing File System and Utilities module
const fs = require('fs')
const util = require('util')
  
// Convert callback based methods to promise
// based methods
const makeDir = util.promisify(fs.mkdir)
const readDir = util.promisify(fs.readdir)
  
// Create new directory
makeDir(dir='./Test Directory')
.then(() => {
  console.log(`Directory '${dir}' is created`)
})
  
// If promise gets rejected
.catch(err => {
    console.log(`Error occurs, 
    Error code -> ${err.code},
    Error No -> ${err.errno}`);
})

Implementando la misma funcionalidad usando async await:

// Importing File System and Utilities module
const fs = require('fs')
const util = require('util')
  
// Convert callback based methods to promise
// based methods
const makeDir = util.promisify(fs.mkdir)
const readDir = util.promisify(fs.readdir)
  
const createDirectory = async path => {
  await makeDir(path)
  console.log(`Directory '${path}' is created`)
}
  
createDirectory('./TestDirectory')
  
// If promise gets 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

Contenido del archivo antes de ejecutar el programa:

Contenido del archivo después de ejecutar el programa:

Producción:

Directory './Test Directory' is created

Ejemplo 2: Nombre de archivo: index.js

// Importing File System and Utilities module
const fs = require('fs')
const util = require('util')
  
// Convert callback based methods to 
// promise based methods
const makeDir = util.promisify(fs.mkdir)
const readDir = util.promisify(fs.readdir)
  
console.log(`\nBefore creating new Directory : \n`)
readDir(process.cwd())
.then(filenames => {
  
   // Fetch the contents of current working
   // directory before creating new directory
   for(let filename of filenames){
      console.log(filename)
   }
})
.catch(err => {
   console.log(`Error occurs, 
   Error code -> ${err.code},
   Error No -> ${err.errno}`);
})
  
// Create new directory
makeDir('./Test Directory')
.then(() => {
  
   // Fetch the contents of current working
   // directory after creating new directory
   console.log(`\nAfter creating new directory : \n`)
     
   return readDir(process.cwd())
})
  
.then(filenames => {
  for(let filename of filenames) {
    console.log(filename)
  }
})
  
// If promise gets rejected
.catch(err => {
  console.log(`Error occurs, 
  Error code -> ${err.code},
  Error No -> ${err.errno}`)
})

Implementando la misma funcionalidad usando async await:

// Importing File System and Utilities module
const fs = require('fs')
const util = require('util')
  
// Convert callback based methods to promise
// based methods
const makeDir = util.promisify(fs.mkdir)
const readDir = util.promisify(fs.readdir)
  
const createDirectory = async path => {
  console.log(`\nBefore creating new Directory : \n`)
    
  // Fetch the contents of current working directory
  // before creating new directory
  const oldContents = await readDir(process.cwd())  
  for(let filename of oldContents) {
    console.log(filename)
  }
  
  // Create new directory
  await makeDir('./Test Directory')
  console.log(`\nAfter creating new directory : \n`)
  
  // Fetch the contents of current working directory
  // after creating new directory
  const newContents = await readDir(process.cwd())
  for(let filename of newContents) {
    console.log(filename)
  }
}
  
createDirectory('./TestDirectory')
// If promise gets 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

Contenido del archivo antes de ejecutar el programa:

Contenido del archivo después de ejecutar el programa:

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 *