const callbacks = {}/*** 加载一个远程脚本* @param {String} src 一个远程脚本* @param {Function} callback 回调*/function loadScript(src, callback) {const existingScript = document.getElementById(src)const cb = callback || (() => {})if (!existingScript) {callbacks[src] = []const $script = document.createElement('script')$script.src = src$script.id = src$script.async = 1document.body.appendChild($script)const onEnd = 'onload' in $script ? stdOnEnd.bind($script) : ieOnEnd.bind($script)onEnd($script)}callbacks[src].push(cb)function stdOnEnd(script) {script.onload = () => {this.onerror = this.onload = nullcallbacks[src].forEach(item => {item(null, script)})delete callbacks[src]}script.onerror = () => {this.onerror = this.onload = nullcb(new Error(`Failed to load ${src}`), script)}}function ieOnEnd(script) {script.onreadystatechange = () => {if (this.readyState !== 'complete' && this.readyState !== 'loaded') returnthis.onreadystatechange = nullcallbacks[src].forEach(item => {item(null, script)})delete callbacks[src]}}}/*** 顺序加载一组远程脚本* @param {Array} list 一组远程脚本* @param {Function} cb 回调*/export function loadScriptQueue(list, cb) {const first = list.shift()list.length ? loadScript(first, () => loadScriptQueue(list, cb)) : loadScript(first, cb)}export default loadScript
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。