Функции оцениваются при вызове.
Например
function test() {
window.foo = 'bar';
}
console.log(window.foo); // => undefined
test();
console.log(window.foo); // => bar
Даже если test
было создано до первого console.log
, window.foo
не заполняется до тех пор, пока test
не будет фактически вызван.
Если ваши requires*
функции зависают / блокируются, вам нужно показать код для них (почему бы вам не предоставить источник проблемных?)
Редактировать
В настоящее время ваш сайт отключается от меня, когда вы присоединяете загруженный <script>
к <head>
.
В любом случае, быстрое решение проблемы - разместить нужные сценарии в нижней части страницы до </body>
, поскольку только сценарии в <head>
будут полностью блокировать страницу при загрузке.
Есть несколько элегантных способов поздней загрузки ресурсов, но для простоты ..
<script type="text/javascript" src="http://path/to/jquery.js"></script>
<script type="text/javascript">
requiresJQuery(); // jQuery is available at this point
</script>
</body>
Дело в том, что, поскольку <script>
помещен ПОСЛЕ ваших основных элементов, элементы DOM будут доступны (и потенциально загружены) до того, как браузер начнет загружать ваши другие библиотеки.