使用 fs 模块的推荐方法

在编写使用 fs 模块的 Node.js 脚本时,我通常使用 util.promisify 方法来保证文件系统方法。基于 Promise 的方法允许使用 async/await,这使得代码更容易掌握和阅读。

从 Node.js 11 开始,fs 模块在 promises 属性中提供了 promisified 方法

// 旧的方法使用 util.promisify
const { readFile } = require('fs')
const { promisify } = require('util')
const promisifiedReadFile = promisify(readFile)

promisifiedReadFile(__filename, { encoding: 'utf8' }).then((data) =>
  console.log(data)
)

// 使用基于 promise 的 fs 的新方法
const { readFile } = require('fs').promises
readFile(__filename, { encoding: 'utf8' }).then((data) => console.log(data))

使用 promises 属性,您现在可以跳过将回调转换为 promise 的步骤,无需使用 util.promisify。这对于扁平化一些源代码并使用 async/await 是个好消息!

fs/promises 从 Node.js 14 开始可用

从 Node.js 14 开始,fs 模块提供了两种使用基于 promises 的文件系统的方法。这些 promises 可以通过 require('fs').promisesrequire('fs/promises') 获得。

// 从 Node.js v14 开始:使用基于 Promise 的 fs 方法
const { readFile } = require('fs/promises')

readFile(__filename, { encoding: 'utf8' }).then((data) => console.log(data))

Node.js 的维护者们对于 /promises 路径方式来公开更多现有模块的基于 promise 的方法表示赞成。

后面的 Node.js 版本也遵循了这种做法。

更多资料

Node.js 文件系统模块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值