Node.js – util.promisify() 方法

该方法基本上将一个函数作为输入,该函数遵循常见的回调风格,即带有(err, value)并返回相同版本,该版本返回承诺而不是回调。util.promisify()Node.js

语法

util.promisify(original)

参数

它只需要一个参数 -

  • original - 此参数接受函数的输入并将它们作为承诺返回。

示例 1

创建一个名为“promisify.js”的文件并复制以下代码片段。创建文件后,使用命令“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('./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

以上是 Node.js – util.promisify() 方法 的全部内容, 来源链接: utcz.com/z/352661.html

回到顶部