node.js - 为什么不推荐使用 node fs Promises API?
问题描述
我的应用程序的一部分涉及定期删除一个大文件夹以及与数据库中该文件夹中的文件相关的一些行。
为此,我正在考虑使用以下代码:
const { rmdir } = require('fs/promises');
... begin transaction
... remove database rows
await rmdir(dir, { recursive: true });
... end transaction
我想使用 Promises API 而不是 rmdirSync(它会停止整个服务器)的原因是我希望服务器在操作系统忙于删除文件夹时继续接受请求。我知道我可以只使用回调 api 并在删除文件夹之前结束事务,但这可能会导致不一致并且也不会捕获任何潜在的错误。(当数据库行已经消失时,文件可能仍由 express.static 提供)
但我在这个文档中读到: https : //nodejs.org/api/fs.html#fs_callback_example 不建议使用 Promise API 来支持回调 API。
所以这是我的问题:
为什么使用 Promise API 而不是 Callback API 会更慢?
慢多少?
我可以这样做吗:
const { unlink } = require('fs'); ... begin transaction ... remove database rows await new Promise((res,rej)=>{ unlink('/tmp/hello', (err) => { resolve() }) }); ... end transaction
解决方案
推荐阅读
- html - 在表格上显示带有一些子对象的父对象的问题
- forms - Vuetify 禁用项目的表单验证
- sql - 使用 powershell 检查用户对 sql server 中 Db 的访问权限
- c# - 棱镜 - 如何让所有区域都在视野中
- c++ - 如何消除分段错误?AA树
- javascript - 对所有测试用例强制执行“expect()”
- ruby-on-rails - 如何使用 HTTParty(或 ruby 中的任何其他方式)将原始数据传递到 post 请求中
- typescript - 如何从泛型 TypeScript 类型扩展?
- networking - 如何在不使用浮动 IP 的情况下直接访问 OPENSTACK 实例
- ios - 由于在 iOS 14.2 模拟器的 Excluded Architectures 中设置 arm64 导致的大量错误