node.js - 等待 promise 的 fs.writeFile 与 fs.writeFileSync

标签 node.js promise

此选项之一有一些优点吗?

1.

const fs = require('fs')

const testFunc1 = async () => {
  fs.writeFileSync('text.txt', 'hello world')
}

2.

const fs = require('fs')
const util = require('util')
const writeFilePromisified = util.promisify(fs.writeFile)

const testFunc2 = async () => {
  await writeFilePromisified('text.txt', 'hello world')
}

我知道 writeFile 和 writeFileSync 之间的区别。问题是返回 testFunc1 和 testFunc2 的 Promise 之间是否存在一些差异。那么这和打电话是一样的吗 testFunc1.then(...)//或等待 testFunc1 或者 testFunc2.then(...)//或等待 testFunc2

这两个 promise 将在文件写入完成后实现。

最佳答案

fs 已包含 promisified API不需要promisify

const fsPromises = require("fs/promises");
await fsPromises.writeFile(file, data[, options])

基于 Promise 的异步版本需要将其用作基于 Promise 的控制流的一部分,而同步版本则不强制执行此要求。

异步 ​​readFile/writeFile 是非阻塞的,而同步 readFileSync/writeFileSync 是阻塞的,但允许更快地完成工作。这在密集 IO 操作期间可能会很明显。

关于node.js - 等待 promise 的 fs.writeFile 与 fs.writeFileSync,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53337663/

相关文章:

javascript - express 有时会选择错误的路线

javascript - Node JS : chaining promises which are using promises

javascript - 在 Bluebird 中返回被拒绝的 promise 和 onPossiblyUnhandledRejection 处理程序

javascript - 每个数组元素的异步调用并等待完成

JavaScript:在两个对象数组中查找匹配和差异

javascript - 无法读取未定义的sequelize Express JS 的属性 'findAll'

node.js - 通过在 body、mongoose/mongodb 中提供文档来更新多个文档

javascript - Node/child_process 抛出 E2BIG

javascript - 如何在返回之前等待迭代完成

javascript - 在 for 循环中解决 setTimeout 函数内的 promise