node.js - Node.js 中的异步 foreach

标签 node.js

在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/

相关文章:

node.js - 在控制台上获取响应而对 agent.add() 没有响应

node.js - Nodejs FS |错误: ENOTDIR: not a directory

javascript - 在 Electron 应用程序中为 TypeScript 编译器选择哪个 ECMAScript 版本?

javascript - config/routes.js 中定义的路由出现 404(未找到)错误

node.js - 如何解决 npm 问题?

javascript - 带有 setInterval 的基于时间的 javascript 函数

node.js - OpenShift 上的 Socket.io 和 Node

node.js - 使用 ExpressJS 在 AppFog 上进行 session

javascript - 输出日志到/var/log/syslog

node.js - 如何在 Ubuntu 18.10 中安装 Node Js?