node.js - 我可以在 Node.js 的 for 循环中允许 "breaks"吗?

标签 node.js asynchronous for-loop

我有一个巨大的 for 循环,我希望在处理时允许 I/O 继续。也许每 10,000 次左右的迭代一次。有什么办法可以让我以这种方式允许额外的 I/O 吗?

最佳答案

一个巨大的 for 循环就是阻塞整个服务器。

您有两个选择,要么将 for 循环放入新线程中,要么使其异步。

var data = [];
var next = function(i) {
  // do thing with data [i];
  process.nextTick(next.bind(this, i + 1));
};

process.nextTick(next.bind(this, 0));

我不推荐后者。您只是实现了简单的时间拼接,操作系统级别的进程调度程序可以比您做得更好。

var exec = require("child_process").exec

var s = exec("node " + filename, function (err, stdout, stderr) {
  stdout.on("data", function() { 
    // handle data
  });
});

或者使用hook.io之类的东西来为您管理流程。

实际上,如果您有阻塞 for 循环,您可能需要积极地重新设计代码库。

关于node.js - 我可以在 Node.js 的 for 循环中允许 "breaks"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7502172/

相关文章:

javascript - Firebase 函数返回未定义的值,即使有 promise

java - 通过 Hashmap 改进 Loop 中的 if 语句

python - 通过迭代列表中的多个元素来构建输出字符串的正确方法是什么?

.net - 如何取消长时间运行的数据库操作?

javascript - nodeJS 中的 JSDOM : How do I get back the manipulated html?

Node.js 的可写流和 drain 事件

node.js - 如何使用nodejs构建rest API并限制用户访问白名单ip或域?

javascript - XMLHttpRequest 完成后未调用类中的方法

c - Rcpp 中单个 "for"循环的意外性能

javascript - Gulp 任务中 `return` 语句和 `callback` 引用的用途