loadJS(src).then()异步Promise加载外链js脚本API getScript(src)

loadJS(src).then()异步Promise加载外链js脚本API函数 getScript(src)/getJS(src)

实现一个函数getScript(src)可加载外部js脚本文件, 支持Promise api, 方便调用

支持{ src: '', async: true }非阻塞加载远程js脚本


  // 加载js, 入参可以是string src, 也可以是对象{src: '', async: true}
  function getScript(options) {
    return new Promise(function (resolve, reject) {
      options = typeof options === 'string' ? { src: options } : options;

      var script = document.createElement('script');
      script.src = options.src;
      if (options.async) script.async = options.async;
      script.onload = resolve;
      script.onerror = reject;

      document.body.append(script);
    });
  }


  // 调用 getScript()
  // 加载声网 js sdk
  async function getAgoraSdk() {
    let AgoraRTC = window.AgoraRTC;
    if (AgoraRTC) return AgoraRTC;

    // https://doc.shengwang.cn/doc/rtc/javascript/get-started/quick-start
    let src = 'https://download.agora.io/sdk/release/AgoraRTC_N-4.19.1.js';
    // await getScript({ src });
    await getScript({ src, async: true });
    AgoraRTC = window.AgoraRTC;

    return AgoraRTC;
  }

  // 测试
  getAgoraSdk().then(sdk => {
    console.log('sdk js loaded.', sdk)
  })