UNPKG

dynamic-loading-script

Version:
1 lines 3.3 kB
{"version":3,"sources":["../index.ts"],"sourcesContent":["type Options = {\n variableName: string, // 类似jQuery的$,百度地图的BMap\n timeout?: boolean | number, // 超时时间, 默认不设置超时, 如果超时则不执行回调函数,并取消脚本加载\n callback?: (param: any) => void, // 加载完成后的回调函数\n jsonpCallbackName?: string // jsonp的回调函数名\n}\nexport default function (url: string, option: Options): Promise<any> {\n return new Promise((resolve, reject) => {\n const { variableName, timeout, callback, jsonpCallbackName } = option\n let timer: number;\n let script: HTMLScriptElement;\n // 判断是否是数组\n if (typeof url === 'string') {\n if (!variableName) {\n reject(new Error('variableName不能为空'))\n return;\n }\n if (window[variableName]) {\n callback && callback(window[variableName])\n resolve(window[variableName])\n return;\n }\n if (jsonpCallbackName) {\n window[jsonpCallbackName] = () => {\n resolve(window[variableName])\n delete window[jsonpCallbackName]\n timer && clearTimeout(timer)\n callback && callback(window[variableName])\n }\n }\n if (timeout !== false) {\n timer = window.setTimeout(() => {\n if (!window[variableName]) {\n // 取消加载\n script.onload = null\n script.onerror = null\n document.body.removeChild(script)\n reject(new Error('加载超时'))\n }\n }, (timeout as number) || 10000)\n }\n script = document.createElement('script')\n script.src = url\n script.type = 'text/javascript'\n script.onload = () => {\n if (jsonpCallbackName) return\n timer && clearTimeout(timer)\n callback && callback(window[variableName])\n resolve(window[variableName])\n }\n script.onerror = () => {\n timer && clearTimeout(timer)\n reject(new Error('加载失败'))\n }\n document.head.appendChild(script)\n } else {\n throw new Error('url类型不正确')\n }\n })\n}"],"mappings":";AAMe,SAAR,+BAAkB,KAAa,QAA+B;AACnE,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAM,EAAE,cAAc,SAAS,UAAU,kBAAkB,IAAI;AAC/D,QAAI;AACJ,QAAI;AAEJ,QAAI,OAAO,QAAQ,UAAU;AAC3B,UAAI,CAAC,cAAc;AACjB,eAAO,IAAI,MAAM,sCAAkB,CAAC;AACpC;AAAA,MACF;AACA,UAAI,OAAO,YAAY,GAAG;AACxB,oBAAY,SAAS,OAAO,YAAY,CAAC;AACzC,gBAAQ,OAAO,YAAY,CAAC;AAC5B;AAAA,MACF;AACA,UAAI,mBAAmB;AACrB,eAAO,iBAAiB,IAAI,MAAM;AAChC,kBAAQ,OAAO,YAAY,CAAC;AAC5B,iBAAO,OAAO,iBAAiB;AAC/B,mBAAS,aAAa,KAAK;AAC3B,sBAAY,SAAS,OAAO,YAAY,CAAC;AAAA,QAC3C;AAAA,MACF;AACA,UAAI,YAAY,OAAO;AACrB,gBAAQ,OAAO,WAAW,MAAM;AAC9B,cAAI,CAAC,OAAO,YAAY,GAAG;AAEzB,mBAAO,SAAS;AAChB,mBAAO,UAAU;AACjB,qBAAS,KAAK,YAAY,MAAM;AAChC,mBAAO,IAAI,MAAM,0BAAM,CAAC;AAAA,UAC1B;AAAA,QACF,GAAI,WAAsB,GAAK;AAAA,MACjC;AACA,eAAS,SAAS,cAAc,QAAQ;AACxC,aAAO,MAAM;AACb,aAAO,OAAO;AACd,aAAO,SAAS,MAAM;AACpB,YAAI;AAAmB;AACvB,iBAAS,aAAa,KAAK;AAC3B,oBAAY,SAAS,OAAO,YAAY,CAAC;AACzC,gBAAQ,OAAO,YAAY,CAAC;AAAA,MAC9B;AACA,aAAO,UAAU,MAAM;AACrB,iBAAS,aAAa,KAAK;AAC3B,eAAO,IAAI,MAAM,0BAAM,CAAC;AAAA,MAC1B;AACA,eAAS,KAAK,YAAY,MAAM;AAAA,IAClC,OAAO;AACL,YAAM,IAAI,MAAM,mCAAU;AAAA,IAC5B;AAAA,EACF,CAAC;AACH;","names":[]}