【发布时间】:2014-09-02 13:41:22
【问题描述】:
回调是异步的,这是否意味着如果我在回调中运行冗长的计算不会影响我的主线程?
例如:
function compute(req,res){ // this is called in an expressjs route.
db.collection.find({'key':aString}).toArray(function(err, items) {
for(var i=0;i<items.length;i++){ // items length may be in thousands.
// Heavy/lengthy computation here, Which may take 5 seconds.
}
res.send("Done");
});
}
因此,对数据库的调用是异步的。这是否意味着回调中的 for 循环不会阻塞主线程?
如果它是阻塞的,我怎样才能以异步方式执行这些事情?
【问题讨论】:
-
回调在你的主线程 - node.js 只有一个线程。每当您在 node.js 中花费超过几毫秒而不将其委托给另一个进程时,您应该会感觉很糟糕。 :)
-
是的,我是这么想的,但是对此无能为力吗?其实我说5秒有点夸张。但是,有时需要进行一些处理。
标签: javascript multithreading node.js