Я пытаюсь использовать Almond.js и оптимизатор Require.js для создания отдельного файла, который можно использовать без Require.js. Мне удалось успешно скомпилировать файл, и весь код работает, но есть одна проблема: код выполняется в неправильном порядке.
Допустим, мой основной файл (тот, что в параметре include=
, переданном оптимизатору) имеет следующее:
console.log('outside');
require(['someFile'], function(someModule) {
console.log('inside');
window.foo = someModule.rightValue;
});
а затем в моем HTML у меня есть:
<script src="myCompiledFile.js"></script>
<script>
console.log('out in the HTML');
</script>
Поскольку я использую almond.js и скомпилированный файл (и, следовательно, загрузка файла не происходит), я ожидаю получить результат:
outside
inside
out in the HTML
Однако оказывается, что все еще имеет место некоторая асинхронность, потому что на самом деле я вижу следующее:
outside
out in the HTML
inside
и если я попытаюсь проверить window.foo
из HTML, его там нет.
Итак, мой вопрос: как я могу сделать код более похожим на обычный/синхронный файл JS, который сначала запускает весь свой код, прежде чем передать что-то в следующий блок script
? Я не могу точно сказать своим пользователям «обернуть весь ваш код в window.setTimeout».