El método util.promisify() se define en el módulo de utilidades de la biblioteca estándar de Node.js. Básicamente se usa para convertir un método que devuelve respuestas usando una función de devolución de llamada para devolver respuestas en un objeto de promesa. Por lo general, muy pronto se vuelve muy difícil trabajar con devoluciones de llamada debido al anidamiento de devoluciones de llamada o al infierno de devoluciones de llamada. Se vuelve muy difícil organizar o formatear nuestro código para que otros desarrolladores, si trabajan con ese código, puedan entenderlo fácilmente. Por otro lado, es muy fácil tratar con promesas ya que las promesas anidadas también funcionan en estilo lineal, es decir, enstringmiento de promesas. El método util.promisify() hace esto por nosotros y hace que el método funcione con promesas.
Sintaxis:
util.promisify(func)
Parámetros: este método acepta una función de parámetro único que contiene la función basada en devolución de llamada.
Valor de retorno: este método devuelve una función basada en promesas.
Ejemplo 1:
// Node.js program to illustrate // util.promisify() methods // Importing Utilities module const util = require('util') // Importing File System module const fs = require('fs') // Use promisify to convert callback // based method fs.readdir to // promise based method const readdir = util.promisify(fs.readdir) readdir('process.cwd()') .then(files => { console.log(files) }) .catch(err => { console.log(err) })
Producción:
[Error: ENOENT: no such file or directory, scandir 'C:\Users\bhudk\Desktop\nodec\process.cwd()'] { errno: -4058, code: 'ENOENT', syscall: 'scandir', path: 'C:\\Users\\bhudk\\Desktop\\nodec\\process.cwd()' }
Ejemplo 2:
// Node.js program to illustrate // util.promisify() methods // Since promisify function // returns promise version // of a function, it can also // operate using async and await // Importing Utilities module const util = require('util') // Importing File System module const fs = require('fs') // Use promisify to convert callback // based method fs.readdir to // promise based method const readdir = util.promisify(fs.readdir) const readFiles = async (path) => { const files = await readdir(path) console.log(files) } readFiles(process.cwd()).catch(err => { console.log(err) })
Producción:
Ejemplo 3:
// Node.js program to illustrate // util.promisify() methods // Importing Utilities module const util = require('util') importing File System module const fs = require('fs') // Use promisify to convert // callback based methods to // promise based methods const readdir = util.promisify(fs.readdir) const lstat = util.promisify(fs.lstat) const readFiles = async (path) => { const files = await readdir(path) for (let file of files) { const stats = await lstat(file) if (stats.isFile()) { console.log(`${file} -----> File`) } else { console.log(`${file} -----> Folder`) } } } readFiles('process.cwd()').catch(err => { console.log(err) })
Producción:
Referencia: https://nodejs.org/api/util.html#util_util_promisify_original
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