我对下面的代码有一个问题:
var async = require("async");
function sleep(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds){
break;
}
}
}
function hello(no){
console.log(no);
async.forEach(no,function print_list(x, callback){
console.log("I am task number : ", x);
var sleep_time = Math.floor((Math.random()*10)+1);
console.log(sleep_time);
sleep(sleep_time*1000);
},function(err){if (err){console.log(err);}});
}
list = [];
for (var a = 1000; a > 0;a--){
list.push(a);
};
hello(list);在我看来,我希望每个this代码都不会相互阻塞,但我发现这仍然被视为同步代码。
我哪里做错了?
发布于 2012-12-21 00:17:33
Node.js是单线程的,您的睡眠功能正在接管CPU。
请尝试使用setTimeout,以获得一个更实际的示例来说明它是如何工作的。
function hello(no){
console.log(no);
async.forEach(no,function print_list(x, callback){
console.log("I am task number : ", x);
var sleep_time = Math.floor((Math.random()*10)+1);
console.log(sleep_time);
// use setTimeout
setTimeout( function() {}, sleep_time*1000);
},function(err){if (err){console.log(err);}});
}https://stackoverflow.com/questions/13976140
复制相似问题