我如何制作它以便我的服务器不会卡在for for循环中并且可以处理其他请求?如果我可以在我的服务器执行其他操作时并行执行for循环,那将是很好的。
socket.on('drawing', function() {
for (var i = 0; i < x.length-1; i++)
{
//do stuff
}
});
答案 0 :(得分:4)
Async.js有一堆帮助函数,例如foreach和whilst,它们完全符合您的要求。
编辑:
以下是一个完整的例子:
async = require('async');
var i = 0
async.whilst(
// test
function() { return i < 5; },
// loop
function(callback) {
i++;
console.log('doing stuff.');
process.nextTick(callback);
},
// done
function (err) {
console.log('done!');
}
);
哪个输出:
doing stuff.
doing stuff.
doing stuff.
doing stuff.
done!
编辑2:将已命名的功能更改为注释,以避免让人感到困惑。
答案 1 :(得分:2)
你可以使用process.nextTick
移动功能,但它不会真正并行,Node.js是一种事件驱动的语言,所以它并不真正做线程。 Here's概述了使用process.nextTick
。
答案 2 :(得分:1)
根据@ Slace的回答,您可以使用异步递归。
socket.on('drawing', function {
var i = 0;
(function someFunction() {
if (i < x.length - 1) {
i++;
// Do stuff.
process.nextTick(someFunction)
} else {
// Do something else.
}
}());
});