在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
。
关于node.js - Node.js 中的异步 foreach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15151697/