А так работает?
/**
* @author Mikhailov «Nexus» Artem
* @site [url]https://vk.com/nexus94[/url]
*/
var require,requirePathPrefix='';
(function(){
let __loaded_libraries={};
const getArguments=function(args){
return (args[0] instanceof Array)?args[0]:[].slice.call(args);
};
const get=function(type,args){
if(!args.length)
return Promise.resolve();
return require(
getArguments(args).map(function(path){
return {
type:type,
src:path
};
})
);
};
const Interface={
js:function(url){
return get('js',arguments);
},
css:function(url){
return get('css',arguments);
}
};
require=function(){
if(!arguments.length)
return Interface;
const prom=Promise.all(getArguments(arguments).filter(function(path){
path=(!!path.src&&!!path.type)?path:path.split('#').shift().split('?').shift();//remove hash and get-params
return (!__loaded_libraries[path] || !!path.src) && ['css','js'].indexOf(
!!path.type?
path.type:
path.split('.').pop().toLowerCase()
)>-1;
}).map(function(path){
return new Promise(function(resolve,reject){
__loaded_libraries[!!path.src?path.src:path]=true;
let is_js=(!!path.type?
path.type:
path.split('#').shift().split('?').shift().split('.').pop().toLowerCase()
)==='js',
file_path=(!!path.src?path.src:path),
src=((file_path.substr(0,2)==='//' || file_path.indexOf('http')===0)?'':requirePathPrefix)+
file_path.replace('nocache','nocache='+Math.random()),
node=document.createElement(is_js?'script':'link'),
attrs=is_js?{
type:'text/javascript',
src:src
}:{
type:'text/css',
href:src,
rel:'stylesheet'
};
for(let i in attrs){
if(attrs.hasOwnProperty(i))
node.setAttribute(i,attrs[i]);
};
node.onload=resolve;
node.onerror=reject;
document.head.appendChild(node);
});
}));
prom.catch(function(){
alert('Не удалось загрузить файл. Обновите, пожалуйста, страницу.');
});
return prom;
}
})();
require(['1.js','2.js','3.js']).then(function(){
console.log('Все запросы выполнены успешно.');
});