当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js util.promisify()用法及代码示例


util.promisify()方法在Node.js标准库的实用程序模块中定义。它本质上用于转换使用回调函数返回响应的方法,以在promise对象中返回响应。通常,由于回调嵌套或回调地狱,很快使用回调就变得非常困难。组织或格式化我们的代码变得非常困难,以便其他开发人员如果使用该代码,就可以轻松理解它。另一方面,处理promise非常容易,因为嵌套promise也以线性样式操作,即promise链接。 util.promisify()方法为我们完成了此任务,并使该方法可以按承诺运行。

用法:

util.promisify(func)

参数:此方法接受单个参数func,该函数包含基于回调的函数。

返回值:此方法返回基于promise的函数。

范例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) 
  })

输出:

[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()'
}

范例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) 
  })

输出:

范例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) 
})

输出:

参考:https://nodejs.org/api/util.html#util_util_promisify_original




相关用法


注:本文由纯净天空筛选整理自hunter__js大神的英文原创作品 Node.js | util.promisify() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。