Ответ 1
В целом, разумно ожидать, что в любой момент (скажем, в миллисекундной точности) будет только один слот исполнения, и любые события (например, обратные вызовы setTimeout
), которые должны произойти в этот момент, должны быть все в одной очереди. Это, кажется, ожидание ОП здесь.
Однако нет ничего, что требовало бы, чтобы браузеры работали таким образом, и реальность того, как все будет планироваться, намного сложнее, а также зависит от браузера.
Итак, лучше всего никогда не полагаться на относительное упорядочение любых двух событий, независимо от того, насколько вы думаете, что они должны быть предсказуемыми.
У меня есть заархивированный пост в блоге об особенностях таймеров и моих (похожих) разочарованиях с ними: https://web.archive.org/web/20151029223348/http://blog.getify.com/on-the-nature-of-timers p >