Цитата:
|
setTimeout() выполняется только после выхода из основного потока программы
|
Совершенно верно. Это означает что то что в сет таймауте выполнится после выполнения всех действий данного потока. То есть если это функция, то аосле функции (ну и всего калл стека если он есть). Чтобы результат был таким каким вы его описали программа должна была остановиться между выполнением строк кода, а она этого сделать не может. Нельзя прервать выполнение синхронных строк кода.