【发布时间】:2015-10-11 14:36:21
【问题描述】:
我想用对象对数组进行非阻塞循环,所以我使用了 async.each 函数:
log.info("before");
async.each(products , function(prdt, callback){
for(var i = 0 ; i <4000000000; i++){
var s = i;
}
console.log("inside");
callback();
}, function (err) {
console.log("end");
});
log.info("after");
所以如果我运行上面的代码,我会输出这样的消息:
before
inside
....
inside
end
after
如果 async.each asynchoronous 为什么我看不到该顺序的输出?
before
after
inside
inside..
end
更新1: thx 的答案,但如果我想在我的路由器中执行该代码,我会阻止对我的服务器的所有响应?我需要改变什么?
【问题讨论】:
-
“我需要改变什么?” --- 一种编程语言。 JS(准确地说是它的用户区)在单线程中运行。
-
那么,我怎样才能异步遍历数组并且不阻止用户对我的服务器的响应?
-
你不能。 JS 是单线程的。因此,每当您运行这个 CPU 密集型代码时,其他一切都会等待。
-
所以无论我使用简单的 'products.forEach' 还是 async.each?当我遍历数组时,我阻塞了我的整个服务器?
标签: javascript node.js async.js