我在Node.js技術中有一個基本的混淆。讓我用這個小例子來解釋。Node.js有點混亂
我有這樣一段代碼
setTimeout(function(){
console.log('world');
}, 2000);
console.log('hello');
當我開始執行該代碼時,它immedietely打印「你好」,2秒後它打印「世界」。
現在我只想知道,如果node.js被說成是單線程框架,那麼在哪個上下文或哪裏(線程/進程)這個setTimeout函數被執行,因爲唯一的單線程正在執行剩餘的代碼(印刷世界)。
在數據庫命中等I/O調用的情況下,node.js使用Libeio,後者在內部使用線程。所以它不是單線程的。
我對嗎?
請建議。
感謝
http://stackoverflow.com/questions/7018093/nodejs-really-single-threaded – Jack