node.js - 在 Node/Express 服务器中使用 async/await 是个坏主意吗?

标签 node.js express model-view-controller async-await single-threaded

我有一个 NodeJS/Express Web 应用程序,其中 TypeOrm 用于许多数据库功能。为了避免回调 hell ,我通常使用 async/await从我的端点方法调用并等待数据库操作。
但是,我听说过类似 fs.readFileSync 的方法。应始终避免,因为它们会阻塞并强制所有其他请求等待。这是否也适用于 async/await ?我是否必须使用 promise 和回调来获得不错的多用户性能?

最佳答案

Sync功能真事件循环,直到 io 完成。但另一方面async-await只是 Promise 链的语法糖。它实际上不是同步的,它只是看起来像。这是您需要了解的最大区别。

但是,async-await 引入了一些问题。使 promise 过于连续。

例如,两个独立的 promise 应该与 Promise.all 并行执行但是当你使用 async-await你倾向于做

await func1();
await func2();

因此,从逻辑上讲,您可能会自己制造瓶颈。但在语法上它没有像同步那样的任何问题。

你可以用 Babel REPL 看看 ES5 转译,你可能会更好理解一点。

关于node.js - 在 Node/Express 服务器中使用 async/await 是个坏主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57528518/

相关文章:

python - 使用 npm-install --save 时出现错误 : Can't find Python executable . ..(系统变量已设置 python)

javascript - Node.js 应用程序无需用户即可运行并将数据存储在数据库中

express - 了解 Sequelize 中的钩子(Hook)(返回与附加)

javascript - 将 POST 请求数据 JSON 路由到 View / Controller (node.js)

javascript - 如何使输入成为固定文本

mysql - 为什么在 where 查询中引用其他表的列不起作用?

javascript - Node.js 将变量显示为 HTML

node.js - 如何在 Nodejs 中使用环境变量作为数据库密码?

grails - 从2个不同的 Controller 调用Grails GSP

php - Symfony2 路由参数