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;
});