首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用阻塞长同步操作将暂停Node.js中的所有用户?

使用阻塞长同步操作将暂停Node.js中的所有用户?
EN

Stack Overflow用户
提问于 2015-12-29 03:07:21
回答 2查看 586关注 0票数 2

如果我有一个SMTP服务器(如哈拉卡)或一个使用Node.js的web服务器(如快递),并且我必须使用一个不能转换为异步的同步函数,那么会发生什么情况呢?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-29 04:41:26

要理解您的问题的答案,您确实需要了解node.js 事件循环。我强烈建议访问该链接,并遵循其中的几个链接。

如果必须执行同步操作,请注意,同步调用将阻止上的所有其他请求,即进程。如果您希望同时提供多个客户机/远程服务,那么您肯定希望使用node.js中的node.js来生成并发进程。

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

票数 2
EN

Stack Overflow用户

发布于 2015-12-29 03:46:44

据我所知,同步请求并不会阻塞所有用户,但是在我这样做之前,如果我不能完全确定,我会进行一些测试。使用期货或其他库,可以发送同步请求,这确实不是最优的,但是如果开发人员没有权利/可能处理所有源代码,那么这可能是一个必要的问题。

如果这是在客户端完成的(不是这种情况,但无论如何让我们澄清一下),那么来自浏览器的同步请求如下所示:

代码语言:javascript
复制
funcion Foo(){
   var request = new XMLHttpRequest();
   request.open("GET", "http://server.com", false);
   request.send();
   function handleResponse(response) {
      console.log(response);
   }
   handleResponse(request.responseText);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34503840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档