JavaScript является однопоточным. Время, переданное setTimeout
, является минимумом, но не максимумом, поэтому, если вы передаете что-то вроде 10 (мс), вы, по сути, говорите: «Выполните этот код после завершения всего выполняющегося в данный момент кода».
Итак, если все элементы управления используют $(document).ready()
для выполнения своей задачи, все, что вам нужно:
$(document).ready(function() {
setTimeout(function() {
doStuff();
},10);
});
doStuff
будет вызван после выполнения всех функций, переданных в $(document).ready
. Тем не менее, это не надежно. Если элементы управления по-своему определяют, загружен ли документ или делают свой собственный setTimeout()
, у вас проблемы. Проблема в том, что JavaScript не гарантирует порядок выполнения setTimeout
s. Иногда ваш код может выполняться последним, в других случаях он может выполняться до setTimeout
s, используемого для анимации.
Последняя идея: если вся анимация выполняется с использованием jQuery, то эффекты выполняются в одной очереди. В doStuff
вы можете добавить анимацию некоторого вида с обратным вызовом и быть достаточно уверенным, что обратный вызов будет выполняться последним.