Мне нужно включить несколько js-файлов синхронно, и после их успешного включения я позвоню function main()
, который создаст виджет. Для этого в настоящее время я построил функцию, таким образомЗагрузка файлов .js с использованием javascript синхронно
var scriptArrayHC = [retrieveURL()+"/js/bootstrap.min.js",
"//platform.twitter.com/widgets.js",
retrieveURL()+"/js/html5shiv-2.js",
retrieveURL()+"/js/ie-emulation-modes-warning.js",
retrieveURL()+"/js/ie10-viewport-bug-workaround.js"];
function loadScript(scriptArray, func){
var counter_script=0;
[].forEach.call(scriptArray, function(src){
var script = document.createElement('script');
script.onload = function() {
counter_script++;
//console.log("Script "+counter_script+" --- "+src);
if(counter_script==scriptArray.length) eval(func);
};
script.src = src;
document.getElementsByTagName('head')[0].appendChild(script);
});
}
loadScript(scriptArray, "main()");
Это работает нормально .. Но я думаю, что это не самый лучший способ. У кого-нибудь есть лучший способ сделать это или есть библиотека для этого?
Почему не динамическая асинхронная загрузка (требуется/browserify/WebPack/JSPM/этажерки)? – Amit
Прокопайте через RequireJS на [git] (https://github.com/jrburke/requirejs). Пока он загружает js _async_, он, похоже, добавляет скрипты в заголовок и может быть далеко от того, что вы пытаетесь достичь, - посмотрите вокруг кода, я уверен, что они приблизились к тому, что является _best way_ , –
Будет ли динамическая загрузка async обрабатывать зависимость одного js-файла на другом? – void