javascript - Node Js如何在阻塞进程的情况下处理多个并行请求

标签 javascript node.js io server

我正在做一个小项目,其中用户向我的服务器发出 http 请求,之后我从三个不同的服务器获取并处理一些数据,然后将汇总结果返回给客户端。

当超过两​​个客户端同时发出请求时,一切正常接受,所有客户端都无法获得响应并面临超时错误。

如何处理这件事。

提前致谢

最佳答案

好的,我明白了。我建议对这类东西使用 es6 promises。 您可以使用 request-promisebluebird向其他服务器发出 http 请求。

然后就是:

var rp = require('request-promise');
var bluebird = require('bluebird');

bluebird
.all(rp('http://www.google.com'), rp('http://example.com'))
.then(function (googleResponse, exampleResponse) {
    // Some computation
    return someResult;
})
.then(function (previousResult) {
    // Some more computation
    return someResult;
});

基本上你想要的是进行计算的一部分,返回 then 并允许 Node 接管,然后在 next then 中进行其他部分的计算等等。如果您将流程分成几个小块,您应该能够减少阻塞。

除此之外,您还可以检查 Node 集群,这是一个非常简单的过程,可让您处理少数工作人员之间的服务器负载: https://www.sitepoint.com/how-to-create-a-node-js-cluster-for-speeding-up-your-apps/

关于javascript - Node Js如何在阻塞进程的情况下处理多个并行请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38369606/

相关文章:

javascript - jQuery pjax 和谷歌分析

javascript - 如何将 CustomElementRegistry 复制到子窗口?

javascript - 找不到要运行的任何测试。我们看了但没有找到 cypress.json

node.js - 根据条件逻辑调用Q Promise

Java 和文件列表

java - 删除最后一个空行

java - 通过 Resource 读写 Java 文件

javascript - Webpack、React 和 Babel,不渲染 DOM

javascript - 跨域Nodejs认证

javascript - Node Express app.get(*) req.url 始终为/favion.ico