У меня вопрос о единственном потоковом характере Javascript.
console.log("1");
setTimeout(function(){console.log("2");},3000);
console.log("3");
setTimeout(function(){console.log("4");},1000);
Результат этого кода 1 3 4 2. Как вы видите, 4 появляется после 2, что заставляет задуматься, что в одной потоковой среде не должно 2 появилось после 4? Если нет, то почему JS знает, что второй setTimeout должен заканчиваться до первого? Не должно быть двух потоков, которые работают одновременно для завершения двух setTimeout, чтобы уведомить EventLoop?