UNPKG

ukelli-ui

Version:

Base on React's UI lib. Make frontend's dev simpler and faster.

72 lines (71 loc) 2.23 kB
/* eslint-disable no-param-reassign */ var __spreadArrays = (this && this.__spreadArrays) || function () { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; }; import { Call } from 'basic-helper'; /** * 加载外部资源 */ export function LoadStuff(params) { var src = params.src, onload = params.onload, type = params.type; return new Promise(function (resolve, reject) { var reloadTimes = 0; var loadUrl = src; function load(element) { if (reloadTimes > 2) return; reloadTimes++; element.onload = function () { var arg = []; for (var _i = 0; _i < arguments.length; _i++) { arg[_i] = arguments[_i]; } Call.apply(void 0, __spreadArrays([onload], arg)); resolve.apply(void 0, arg); }; /** 如果加载失败,尝试继续加载 */ element.onerror = function () { return load(element); }; document.body.appendChild(element); } switch (type) { case 'css': var link = document.createElement('link'); link.rel = 'stylesheet'; link.href = loadUrl; load(link); break; case 'script': var script = document.createElement('script'); script.type = 'text/javascript'; script.src = loadUrl; load(script); break; } }); } /** * 加载 link * * @param {object} options { src: string, onload: func } */ export function LoadLink(options) { var _options = Object.assign({}, options, { type: 'css' }); return LoadStuff(_options); } /** * 加载 script * * @param {object} options { src: string, onload: func } */ export function LoadScript(options) { var _options = Object.assign({}, options, { type: 'script' }); return LoadStuff(_options); }