回調是異步的,那麼這是否意味着如果我在回調中運行冗長的計算,它不會影響我的主線程?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