javascript写的异步加载js文件函数(支持数组传参)


Posted in Javascript onJune 07, 2014

自己用的加载js文件,支持多文件,不兼容ie

/**
 * 加载js文件
 * @param  {string || array}   url   js路径
 * @param  {Function} fn      加载完成后回调
 * @return {object}           game对象
 * @example
 * getScript("url.js",fn)
 * getScript(["url-1.js","url-2.js"],fn)
 */
game.getScript = (function() {
 var cache = {};//内部缓存下url,下次则不请求
 return function(url, fn) {
  if ("string" === typeof(url)) {
   url = [url]; //如果不是数组带个套
  };
  var i = 0,//循环起
   ok = 0,//加载成功几个js
   len = url.length,//一共几个js
   head = document.getElementsByTagName("head")[0],
   js, _url,
   create = function(url) {//创建js
    js = document.createElement("script");
    js.type = "text/javascript";
    js.src = url;
    head.appendChild(js);
    return js;
   };
  for (; i < len;) {
   if (cache[encodeURIComponent((_url = url[i++]))]) {//如果加载过
    (++ok >= len && fn) && fn();//如果加载完所有的js则执行回调
    continue;
   }
   cache[encodeURIComponent(_url)] = !0;//设置缓存
   js = create(_url);//创建js
   fn && (js.onload = function() {
    if (++ok >= len) {//如果加载完所有的js则执行回调
     fn();
    }
   });
  };
  head = js = _url = create  = null;
  return this;
 }
})();
Javascript 相关文章推荐
Extjs学习笔记之九 数据模型(上)
Jan 11 Javascript
扩展jQuery对象时如何扩展成员变量具体怎么实现
Apr 25 Javascript
谈谈javascript中使用连等赋值操作带来的问题
Nov 26 Javascript
基于Jquery实现仿百度百科右侧导航代码附源码下载
Nov 27 Javascript
谈谈JavaScript类型系统之Math
Jan 06 Javascript
Node.js connect ECONNREFUSED错误解决办法
Sep 15 Javascript
利用JQuery实现datatables插件的增加和删除行功能
Jan 06 Javascript
JS判断微信扫码的方法
Aug 07 Javascript
React Native之TextInput组件解析示例
Aug 22 Javascript
浅谈react-router HashRouter和BrowserRouter的使用
Dec 29 Javascript
用Object.prototype.toString.call(obj)检测对象类型原因分析
Oct 11 Javascript
Vue实现商品飞入购物车效果(电商项目)
Nov 26 Javascript
关于JavaScript命名空间的一些心得
Jun 07 #Javascript
javascript随机之洗牌算法深入分析
Jun 07 #Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
Jun 07 #Javascript
js中的caller和callee属性介绍和例子
Jun 07 #Javascript
javascript中拼接HTML字符串的最快、最好的方法
Jun 07 #Javascript
javascript在网页中实现读取剪贴板粘贴截图功能
Jun 07 #Javascript
JavaScript异步回调的Promise模式封装实例
Jun 07 #Javascript
You might like
PHP备份数据库生成SQL文件并下载的函数代码
2012/02/05 PHP
PHP中使用addslashes函数转义的安全性原理分析
2014/11/03 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
2018/12/05 PHP
表单提交验证类
2006/07/14 Javascript
javascript json2 使用方法
2010/03/16 Javascript
nodejs npm package.json中文文档
2014/09/04 NodeJs
jQuery拖拽通过八个点改变div大小
2020/11/29 Javascript
深入理解JavaScript中的尾调用(Tail Call)
2017/02/07 Javascript
微信小程序图片自适应支持多图实例详解
2017/06/21 Javascript
初学者AngularJS的环境搭建过程
2017/10/27 Javascript
React Form组件的实现封装杂谈
2018/05/07 Javascript
jQuery实现常见的隐藏与展示列表效果示例
2018/06/04 jQuery
使用Vuex解决Vue中的身份验证问题
2018/09/28 Javascript
vue+element模态框中新增模态框和删除功能
2019/06/11 Javascript
使用python调用浏览器并打开一个网址的例子
2014/06/05 Python
Python Web框架Flask中使用新浪SAE云存储实例
2015/02/08 Python
Python3遍历目录树实现方法
2015/05/22 Python
Python3一行代码实现图片文字识别的示例
2018/01/15 Python
python 定时任务去检测服务器端口是否通的实例
2019/01/26 Python
python 获取毫秒数,计算调用时长的方法
2019/02/20 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
2019/05/13 Python
Python3之字节串bytes与字节数组bytearray的使用详解
2019/08/27 Python
python 实现检验33品种数据是否是正态分布
2019/12/09 Python
pytorch实现mnist分类的示例讲解
2020/01/10 Python
Python实现栈的方法详解【基于数组和单链表两种方法】
2020/02/22 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
2020/03/24 Python
简单了解pytest测试框架setup和tearDown
2020/04/14 Python
Python根据指定文件生成XML的方法
2020/06/29 Python
详解Django中的FBV和CBV对比分析
2021/03/01 Python
利用HTML5 Canvas制作一个简单的打飞机游戏
2015/05/11 HTML / CSS
莫斯科的韩国化妆品店:Sifo
2019/12/04 全球购物
个人委托书格式
2014/04/04 职场文书
幼儿园安全责任书
2014/04/14 职场文书
营业员岗位职责
2015/02/11 职场文书
地道战观后感2000字
2015/06/04 职场文书
中学生运动会广播稿
2015/08/19 职场文书