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
相关用法
- Node.js console.timeLog()用法及代码示例
- Node.js GM negative()用法及代码示例
- Node.js GM contrast()用法及代码示例
- Node.js GM whitePoint()用法及代码示例
- Node.js GM median()用法及代码示例
- Node.js GM gaussian()用法及代码示例
- Node.js GM crop()用法及代码示例
- Node.js GM despeckle()用法及代码示例
- Node.js GM whiteThreshold()用法及代码示例
- Node.js GM write()用法及代码示例
- Node.js GM gamma()用法及代码示例
- Node.js GM roll()用法及代码示例
- Node.js GM segment()用法及代码示例
- Node.js GM quality()用法及代码示例
- Node.js GM raise()用法及代码示例
注:本文由纯净天空筛选整理自hunter__js大神的英文原创作品 Node.js | util.promisify() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。