node.js - Node.JS 中应该避免循环还是有特殊的方法来处理它们?

标签 node.js loops asynchronous

循环被阻塞。他们似乎对 Node.JS 的想法漠不关心。如何处理 for 循环或 while 循环似乎是最佳选择的流程。

例如,如果我想打印一个最多 number * 1000 的随机数表,我会想使用 for 循环。 Node.JS 中有没有特殊的方法来处理这个问题?

最佳答案

循环本身并不坏,但这取决于具体情况。但在大多数情况下,您需要在循环内执行一些异步操作。

所以我个人的偏好是根本不使用循环,而是使用对应的函数(forEach/map/reduce/filter)。这样我的代码库就能保持一致(如果需要,同步循环可以轻松更改为异步循环)。

const myArr = [1, 2, 3];
// sync loops
myArr.forEach(syncLogFunction);
console.log('after sync loop');

function syncLogFunction(entry) {
  console.log('sync loop', entry);
}

// now we want to change that into an async operation:
Promise.all(myArr.map(asyncLogFunction))
.then(() => console.log('after async loop'));

function asyncLogFunction(entry) {
  console.log('async loop', entry);
  return new Promise(resolve => setTimeout(resolve, 100));
}

请注意,您可以轻松地在同步和异步版本之间进行更改,结构几乎保持不变。

希望这能有所帮助。

关于node.js - Node.JS 中应该避免循环还是有特殊的方法来处理它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41896460/

相关文章:

node.js - Heroku/Node/React - 如何访问 heroku 上的 Node api 端点

node.js - 您如何在 Node.js + Express + Mongoose + Jade 中处理表单验证,尤其是嵌套模型

node.js - 使用 Node js、express和mongodb在点击位置时在谷歌地图上显示用户信息

python - 使用 .index ("")作为 python 中的嵌套列表

c# - 异步获取和设置

node.js - 指定 Controller 的返回内容类型

python-3.x - AttributeError : 'Series' object has no attribute 'iterrows'

Java 8 Stream 确定文本文件中的最大计数

javascript - 循环中嵌套回调

asynchronous - 如何同步等待 Dart Future 完成