我有一个巨大的 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/