Sha*_*oon 1 asynchronous for-loop node.js
我有一个庞大的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));
Run Code Online (Sandbox Code Playgroud)
我不推荐后者.您只是实现了天真的时间拼接,操作系统级进程调度程序可以做得比您更好.
var exec = require("child_process").exec
var s = exec("node " + filename, function (err, stdout, stderr) {
stdout.on("data", function() {
// handle data
});
});
Run Code Online (Sandbox Code Playgroud)
或者使用类似的东西hook.io为您管理流程.
实际上,如果你有一个阻塞for循环,你可能想要积极地重新设计你的代码库.
| 归档时间: |
|
| 查看次数: |
384 次 |
| 最近记录: |