Node.js – util.promisify() 方法
util.promisify() 方法主要以一个函数作为输入,该函数遵循通用的 Node.js 回调风格,即具有一个 (err, value),并返回其版本,该版本返回一个 promise,而不是回调。
语法
util.promisify(original)
参数
它只采用一个参数 −
original −此参数获取函数的输入,并将其作为 promise 返回。
示例 1
创建一个名为 "promisify.js" 的文件,并复制以下代码片段。创建文件后,使用命令 "node promisify.js" 运行此代码。
// util.promisify() Demo example // Importing the fs and util modules const fs = require('fs'); const util = require('util'); // Reading the file using a promise & printing its text const readFile = util.promisify(fs.readFile); readFile('./promisify.js', 'utf8') // Reading the same file .then((text) => { console.log(text); }) // Printing error if any .catch((err) => { console.log('Error', err); });
在上面的示例中,我们已使用 fs 模块读取文件。我们已使用 util.promisify() 方法将 fs.readFile 转换为基于 promise 的方法。现在,上述方法为我们提供了 promise,而不是回调。Promise 进一步提供了两个方法 "then" 和 "catch",用于获取函数结果。
输出
C:\home
ode>> node promisify.js // util.promisify() Demo example // Importing the fs and util modules const fs = require('fs'); const util = require('util'); // Reading the file using a promise & printing its text const readFile = util.promisify(fs.readFile); readFile('./util.js', 'utf8') .then((text) => { console.log(text); }) // Printing error if any .catch((err) => { console.log('Error', err); });
示例 2
我们来看一个更高级的示例
// util.promisify() Demo example // Importing the fs and util modules const util = require('util') const fs = require('fs') // Changing from callback to promise based const readdir = util.promisify(fs.readdir) // Reading files const readFiles = async (path) => { const files = await readdir(path) // Printing current working directory console.log(files) //Print all files on current working directory console.log(process.cwd()) } readFiles(process.cwd()).catch(err => { console.log(err) })
输出
C:\home
ode>> node promisify.js [ 'app.js', 'index.html', 'node_modules', 'package-lock.json', 'package.json', 'promisify.js', C:\home
ode
广告