我一直在閱讀John Resig的「JavaScript忍者的祕密」,它解釋說JavaScript是單線程的。不過,我試着測試此,我不知道該怎麼從這裏帶走:瞭解JavaScript的單線程本質
// executing this in browser
(function() {
// throw something into event queue
setTimeout(function() {
alert("This will be called back after 1 second.");
}, 1000);
// arbitrary loop to take up some time
for (var i = 0; i < 10000; i += 1) {
console.log(i);
}
})();
也許我不理解什麼是單線程的方式,但我認爲setTimeout的回調不會直到所有的外部匿名函數完成。但是,在瀏覽器中運行這個函數會顯示回調函數被調用,而我仍然被輸出到控制檯上。對我來說,這似乎有2線程與匿名函數的invokation佔用1線程,然後回調使用第二線程。
有人可以幫我解開困惑嗎?
'console.log'是異步的,至少跨IE,Firefox,Chrome。更多:http://stackoverflow.com/questions/4057440/is-chromes-javascript-console-lazy-about-evaluating-arrays。異步不承擔多線程。 – Noseratio