在node.js中,我知道array.forEach正在阻止。

我需要遍历一个数组并构建一个像这样的字符串:

var rarray = ['test', 'test2'];
var rstring = '';
  rarray.forEach(function(e, i){
  rstring = rstring + i + e;
});
return rstring;


我该如何异步进行?

最佳答案

在这种情况下,您可能不需要将此代码转换为异步版本。

假设地,或者对于非常大的数组,这是一种将代码转换为异步的方法,或者至少将其周期性地返回到主事件循环的方法。

var rarray = ['test', 'test2'];
var rstring = '';
var max = rarray.length;
var current = 0;

process.nextTick(function next() {
  rstring = rstring + rarray[current++];
  if (current >= max) {
    console.log("done", rstring);
  } else {
    process.nextTick(next);
  }
});


实际上,您可以将其包装在一个函数中,并通过调用完成回调来替换console.log

09-29 20:19