Javascript Nodejs服务器-通过使循环迭代异步来提高性能

Javascript Nodejs服务器-通过使循环迭代异步来提高性能,javascript,node.js,Javascript,Node.js,考虑以下服务器端nodejs代码。假设循环中的代码是原子的(代码应该执行一次),迭代之间没有依赖关系 for (var i=0; i<aVeryLargeValue; i++){ //do atomic complex calculations } for(var i=0;i当然,您可以根据需要将循环拆分为多个部分,但是由于开销的原因,摘要执行时间会更糟 据我所知,在JavaScript中无法运行并行循环(分别为node.js)。您的问题似乎是aVeryLargeValue导致

考虑以下服务器端nodejs代码。假设循环中的代码是原子的(代码应该执行一次),迭代之间没有依赖关系

for (var i=0; i<aVeryLargeValue; i++){
    //do atomic complex calculations
} 

for(var i=0;i当然,您可以根据需要将循环拆分为多个部分,但是由于开销的原因,摘要执行时间会更糟


据我所知,在JavaScript中无法运行并行循环(分别为node.js)。

您的问题似乎是
aVeryLargeValue
导致服务器处理此循环的时间过长,因此会阻塞其他请求

使用
async
模块进行处理。您可以使用
while
功能将循环分解为多个部分

var async = require('async');

var aVeryLargeValue=99999;
var i=0;
async.whilst(
  function() { return i < aVeryLargeValue; },
  function(callback) {
    for(x=i;x<i+1000;x++) {
      //do something
    }
    i+=1000;
    callback();
  },
  function(err) {
    if(err) throw err;
  }
);
var async=require('async');
var aVeryLargeValue=99999;
var i=0;
异步的(
函数(){return i例如(x=i;x使事情异步并不能提高计算速度。如果做得好,它能做什么允许在长时间运行的计算过程中运行其他内容。在node中,您可以运行子进程来处理计算,并在结果完成时通知主进程。我的错误。实际上我想提高服务器性能。@jfriend00是对的-由于NodeJS是单线程的,所以拆分不会提高性能因为每个循环仍然需要在同一个线程中执行,所以将大量计算放入子进程中——这是唯一的方法。