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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。