Ответ 1
JavaScript является однопоточным в любом месте, в браузере или в NodeJS. Он никогда не должен был поддерживать многопоточность в любом случае (и, вероятно, если кто-то реализует JS-движок с каким-то многопоточным движением, то, безусловно, будут плохие вещи)
ИЗМЕНИТЬ, чтобы ответить на ваше редактирование:
Эта очередь событий заполняется данными (событиями мыши /kb, сетевыми событиями и т.д.) из основного цикла браузера. Тот же основной цикл, который запускает JS. Фигура, которую вы публикуете, правильная, но она (вроде) размывает реальность. AFAIK Только один поток обрабатывает все (то есть, заполняя очередь и запуская, поочередно, любой JS-код).
EDIT: один из способов доказать это: создать действительно длинный цикл и текстовую область. Попробуйте написать в тексте, пока цикл запущен. Вы не можете: это потому, что основной цикл занят запуском цикла, поэтому он не может обрабатывать события kb.
EDIT: кажется, это действительно хороший ответ: Является ли JavaScript гарантированным однопоточным?
+2 года после последнего EDIT: этот ответ становится немного старым и отстраненным от реальности. io.js(и node.js после этого, возможно, Chrom [e | ium], FF, Safari после этого) продвигается к многопроцессорной поддержке (через рабочих). Вы можете узнать больше об этом здесь.