javascript - 使用阻塞长同步操作会暂停 Node.js 中的所有用户吗?

标签 javascript node.js asynchronous

如果我有一个使用 Node.js 的 SMTP 服务器(如 haraka )或 Web 服务器(如 Express ),并且我必须使用无法转换为异步的同步函数,会发生什么?

如果我必须以同步方式发出 HTTP 请求,服务器将挂起给所有用户,直到 http 请求完成或仅挂起给当前用户/电子邮件?所有用户的处理都会暂停吗?

最佳答案

要理解您问题的答案,您确实需要了解node.js event loop 。我强烈建议访问该 SO 链接并关注其中的一些链接。

如果您必须执行同步操作,请注意,同步调用将阻止进程上的所有其他请求。如果您希望同时为多个客户端/远程提供服务,那么您肯定会想要使用 cluster module烘焙到 Node.js 中以生成并发进程。

此外,如果您的同步操作速度慢到足以影响您的 QoS,那么熟悉 process.nextTick 并防止您的进程在等待时完全停止是一个非常明智的主意以便完成同步操作。

关于javascript - 使用阻塞长同步操作会暂停 Node.js 中的所有用户吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34503840/

相关文章:

javascript - 如何使用 "this"和 fetch ?

javascript - Node.js Passport 登录成功后显示用户名

javascript - Express + Jade 渲染 - 客户端还是服务器端?

ios - 延迟 commitEditingStyle 中的模型和 TableView 更改

javascript - DOJO 获取小部件的 id

javascript - 日语字符的正则表达式

javascript - JQuery 插件不会在模态内工作

javascript - JSON 是使用文件类型创建的,而不是 .JSON

node.js - 如何将信息发送回前端,运行由 webhook 触发的函数?

c# - WPF:异步进度条