回调是异步的,那么这是否意味着如果我在回调中运行冗长的计算,它不会影响我的主线程?NodeJs/expressjs:在回调中运行冗长的代码
例如:
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");
});
}
所以,在调用数据库ascnchronous。这是否意味着回调中的for循环不会阻塞主线程?
如果它阻塞,我该如何以异步的方式执行这样的事情?
回调*在你的主线程中 - node.js *只有一个线程*。任何时候,如果您在node.js中花费了几毫秒而不将其委托给另一个进程,那么您应该感觉不好。 :) – Amadan 2014-09-02 04:44:10
是的,我感觉如此,但是不能做任何事情吗?其实我夸大了5秒。但是,有时需要一些处理。 – codin 2014-09-02 04:50:19