Load external JavaScript with ES6 promises
by sas_sam
HTML
<body>
</body>
Babel + JSX
const importer = {
url: (url) => {
return new Promise((resolve, reject) => {
let script = document.createElement('script');
script.type = 'text/javascript';
script.src = url;
script.addEventListener('load', () => resolve(script), false);
script.addEventListener('error', () => reject(script), false);
document.body.appendChild(script);
});
},
urls: (urls) => {
return Promise.all(urls.map(importer.url));
}
};
importer.urls([
'//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js', '//cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js'
]).then(() => {
debugger;
document.querySelector('body').innerHTML = 'underscore: ' + _.VERSION + '<br>' + 'jquery: ' + jQuery.fn.jquery;
});