Node.js – util.promisify() 方法
该方法基本上将一个函数作为输入,该函数遵循常见的回调风格,即带有(err,value)并返回相同版本,该版本返回承诺而不是回调。util.promisify()Node.js
语法
util.promisify(original)
参数
它只需要一个参数-
original-此参数接受函数的输入并将它们作为承诺返回。
示例1
创建一个名为“promisify.js”的文件并复制以下代码片段。创建文件后,使用命令“nodepromisify.js”运行此代码。
//util.promisify()演示示例 //导入fs和util模块 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') //读取同一个文件 .then((text) => { console.log(text); }) //打印错误(如有) .catch((err) => { console.log('Error', err); });
在上面的例子中,我们使用了fs模块来读取文件。我们已经使用方法将fs.readFile转换为基于Promise的方法。现在,上面的方法给了我们一个承诺而不是回调。Promise进一步有两个方法“then”和“catch”,用于获取函数结果。util.promisify()
输出结果
C:\home\node>> node promisify.js //util.promisify()演示示例 //导入fs和util模块 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); }) //打印错误(如有) .catch((err) => { console.log('Error', err); });
示例2
让我们再看一个例子
//util.promisify()演示示例 //导入fs和util模块 const util = require('util') const fs = require('fs') //从回调更改为基于承诺 const readdir = util.promisify(fs.readdir) //读取文件 const readFiles = async (path) => { const files = await readdir(path) //打印当前工作目录 console.log(files) //打印当前工作目录中的所有文件 console.log(process.cwd()) } readFiles(process.cwd()).catch(err => { console.log(err) })输出结果
C:\home\node>> node promisify.js [ 'app.js', 'index.html', 'node_modules', 'package-lock.json', 'package.json', 'promisify.js', C:\home\node