Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何设置节点服务器以同时运行不同的请求?_Javascript_Node.js_Http_Async Await_Singlethreadmodel - Fatal编程技术网

Javascript 如何设置节点服务器以同时运行不同的请求?

Javascript 如何设置节点服务器以同时运行不同的请求?,javascript,node.js,http,async-await,singlethreadmodel,Javascript,Node.js,Http,Async Await,Singlethreadmodel,有人问我如何设置节点服务器以同时运行不同的请求。问题如下:创建一个只有1条路由('/single')的web服务器,在控制器中运行以下代码以模拟密集的CPU工作: const obj = {}; for(let i = 0; i < 2000000; ++i) { obj[i] = {[Math.random()]: Math.random()}; } const jsonString = JSON.stringify(obj); const obj2 = JSON.parse(j

有人问我如何设置节点服务器以同时运行不同的请求。问题如下:创建一个只有1条路由('/single')的web服务器,在控制器中运行以下代码以模拟密集的CPU工作:

const obj = {};
for(let i = 0; i < 2000000; ++i) {
    obj[i] = {[Math.random()]: Math.random()};
}
const jsonString = JSON.stringify(obj);
const obj2 = JSON.parse(jsonString);
constobj={};
对于(设i=0;i<2000000;++i){
obj[i]={[Math.random()]:Math.random()};
}
const jsonString=JSON.stringify(obj);
const obj2=JSON.parse(jsonString);
因此,如果运行请求需要2秒,那么在单线程模式下,10个请求将运行20秒。现在,我的任务是将服务器设置为同时运行不同的请求,所以运行10个请求不会花费20秒,但要少得多


据我所知,为了解决这个问题,它是关于如何使用异步函数和setTimeout方法的,我在这里呆了几天。请帮助我。

您可以使用群集在多个线程上运行相同的节点进程,理想情况下,处理多个核心并发请求所需的处理核心数。
详情如下:


或者不用编写任何代码就可以实现相同的结果。

您的思路是正确的。您可以将您的逻辑封装在一个承诺中,该承诺将使用您的请求响应的数据进行解析。例如,
函数X(){returnnewpromise((res,rej)=>{fetch('url')。然后((res)=>res(res)).catch((err)=>rej(err));};}
节点并不意味着运行非常CPU密集的操作,因为它是单线程的。如果您的应用程序非常CPU密集,那么您的设计可能有问题。Node擅长于输入/输出密集型应用程序,如数据库或Elasticsearch调用。这些操作对节点来说没有任何成本,因为它们是由其他进程执行的,这些进程允许它们是异步的,并且不会阻塞线程。所以节点可以同时执行大量的请求。这是它的工作。