javascript - fs.promise.rm 在创建文件之前无法创建承诺
问题描述
我尝试为同一个文件创建一个fs.promise.writeFile
操作和fs.promise.rm
操作,并在稍后阶段执行它们。我得到错误ENOENT: no such file or directory
。我正在尝试类似的东西(为了简单和可重复性,我在这个例子中颠倒了创建的 Promise 的顺序):
const fs = require('fs');
const path = require('path');
async function test() {
try {
let file = path.resolve('test.txt');
const rm = fs.promises.rm(file);
const writeFile = fs.promises.writeFile(file, 'foo');
await writeFile;
await rm;
} catch(err) {
console.log(err);
}
}
所以在我看来,这个操作在实际执行之前就抛出了。我能做些什么来防止过早地部分执行rm
操作吗?
解决方案
你这样做的顺序错误。承诺可以在 await 调用之前开始完成。你应该做await writeFile
之前const rm =
。
推荐阅读
- xcode - AudoiDeviceGetCurrentTime:xcode 中没有给定 ID 错误的设备
- apache-kafka - 如何在生产者端使用 Kafka 进行容错
- oracle - 将 Netbeans 连接到 Oracle SQL(远程主机)引发异常
- angular - @NgRx 如何在实体之间建立多对多关系?
- json - 正则表达式范围选择
- c# - 需要不强制数据一致性的高性能 C# 集合
- reactjs - MDB DataTable text-align on th 和 td 在 ReactJS
- java - 是否有任何 API 可用于阿联酋通行证的数字签名
- gstreamer - “多路复用器”有什么用。在管道命令中
- sql - 如何使用新属性值更新 JSON 列?