Вам может быть интересно использовать метод defer
.
defer означает «дождитесь завершения анализатора для выполнения этого». Это примерно эквивалентно привязке вашего скрипта к событию DOMContentLoaded или использованию jQuery.ready. Когда код запускается, все в DOM будет доступно для вас. В отличие от async, код defer'd будет работать в том порядке, в котором он отображается в HTML-странице страницы, он просто отложен до тех пор, пока HTML не будет полностью проанализирован.
Например:
Подробнее здесь