node.js - 在 Node/Express 服务器中使用 async/await 是个坏主意吗?
问题描述
我有一个 NodeJS/Express Web 应用程序,其中 TypeOrm 用于许多数据库功能。为了避免回调地狱,我通常使用async/await
我的端点方法调用并等待数据库操作。
但是,我听说fs.readFileSync
应该始终避免使用类似的方法,因为它们会阻塞并且会强制所有其他请求等待。这是否也适用于async/await
?我是否必须使用承诺和回调来获得良好的多用户性能?
解决方案
Sync
函数确实阻塞了事件循环,直到 io 完成。但另一方面async-await
,它只是 Promise 链接的语法糖。它实际上不是同步的,它只是看起来像它。这是您需要了解的最大区别。
async-await
但是,由于承诺过于连续,会引入一些问题。
例如,两个独立的 Promise 应该并行执行Promise.all
但是当你使用时async-await
你倾向于做
await func1();
await func2();
因此,从逻辑上讲,您可能会自己制造瓶颈。但从语法上讲,它没有任何像 Sync 这样的问题。
您可以使用 Babel REPL 查看 ES5 转译,您可能会更好地理解一些。
推荐阅读
- python - 无法从网站上抓取数据:Python BS4
- docker - 如何在没有 Visual Studio 和 docker compose 的情况下使用 docker 复制 csproj 文件?
- java - java:不能在数组中使用构造函数
- python - LogisticRegression MemoryError
- elasticsearch - 文件大小为 42 MB 的 Elasticsearch 索引文档在 2GB 堆成员上创建
- acumatica - 添加到 Acumatica 通用查询的外部链接。
- bash - 使用 ssh 启动后台进程,运行实验脚本,然后停止它
- c++ - 从默认参数初始化 const 引用参数会导致悬空引用吗?
- c++ - 编写代码时,C++ 中出现错误:错误 1 错误 C2601:'circle':本地函数定义是非法的
- reactjs - Konva 图像元素消失