javascript带回调函数的异步脚本载入方法实例分析


Posted in Javascript onJuly 02, 2015

本文实例讲述了javascript带回调函数的异步脚本载入方法。分享给大家供大家参考。具体实现方法如下:

var Loader = function () { }
Loader.prototype = {
  require: function (scripts, callback) {
    this.loadCount   = 0;
    this.totalRequired = scripts.length;
    this.callback    = callback;
    for (var i = 0; i < scripts.length; i++) {
      this.writeScript(scripts[i]);
    }
  },
  loaded: function (evt) {
    this.loadCount++;
    if (this.loadCount == this.totalRequired && typeof this.callback == 'function') this.callback.call();
  },
  writeScript: function (src) {
    var self = this;
    var s = document.createElement('script');
    s.type = "text/javascript";
    s.async = true;
    s.src = src;
    s.addEventListener('load', function (e) { self.loaded(e); }, false);
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(s);
  }
}

用法演示

var l = new Loader();
l.require([
  "example-script-1.js",
  "example-script-2.js"],
  function() {
    // Callback
    console.log('All Scripts Loaded');
  });

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
js 颜色选择器(兼容firefox)
Mar 05 Javascript
一个JavaScript处理textarea中的字符成每一行实例
Sep 22 Javascript
node中socket.io的事件使用详解
Dec 15 Javascript
jQuery遍历DOM元素与节点方法详解
Apr 14 Javascript
jquery轮播的实现方式 附完整实例
Jul 28 Javascript
微信小程序 地图map实例详解
Jun 07 Javascript
想用好React的你必须要知道的一些事情
Jul 24 Javascript
基于vue-cli配置lib-flexible + rem实现移动端自适应
Dec 26 Javascript
一个基于react的图片裁剪组件示例
Apr 18 Javascript
浅析Vue 生命周期
Jun 21 Javascript
angular中子控制器向父控制器传值的实例
Oct 08 Javascript
详解vue-router的Import异步加载模块问题的解决方案
May 13 Javascript
javascript 闭包详解
Jul 02 #Javascript
JavaScript实现点击自动选择TextArea文本的方法
Jul 02 #Javascript
浅谈Javascript线程及定时机制
Jul 02 #Javascript
JavaScript获得url查询参数的方法
Jul 02 #Javascript
js跨域请求的5中解决方式
Jul 02 #Javascript
JS实现从连接中获取youtube的key实例
Jul 02 #Javascript
由ReactJS的Hello world说开来
Jul 02 #Javascript
You might like
PHP simple_html_dom.php+正则 采集文章代码
2009/12/24 PHP
php 上传文件类型判断函数(避免上传漏洞 )
2010/06/08 PHP
php中删除字符串中最先出现某个字符的实现代码
2013/02/03 PHP
php上传后台无法收到数据解决方法
2019/10/28 PHP
FCK调用方法..
2006/12/21 Javascript
关于onScroll事件在IE6下每次滚动触发三次bug说明
2011/09/21 Javascript
JavaScript 产生不重复的随机数三种实现思路
2012/12/13 Javascript
深入分析原生JavaScript事件
2014/12/29 Javascript
jquery实现对联广告的方法
2015/02/05 Javascript
微信小程序page的生命周期和音频播放及监听实例详解
2017/04/07 Javascript
JavaScript中数组常见操作技巧
2017/09/01 Javascript
vue-cli webpack 引入jquery的方法
2018/01/10 jQuery
实战node静态文件服务器的示例代码
2018/03/08 Javascript
JS实现换肤功能的方法实例详解
2019/01/30 Javascript
vue 列表页跳转详情页获取id以及详情页通过id获取数据
2019/03/27 Javascript
小程序click-scroll组件设计
2019/06/18 Javascript
JavaScript使用表单元素验证表单的示例代码
2019/08/20 Javascript
electron-vue开发环境内存泄漏问题汇总
2019/10/10 Javascript
[01:33:07]VGJ.T vs Newbee Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
闭包在python中的应用之translate和maketrans用法详解
2014/08/27 Python
Python中有趣在__call__函数
2015/06/21 Python
python解决方案:WindowsError: [Error 2]
2016/08/28 Python
python2.7实现FTP文件下载功能
2018/04/15 Python
PyTorch中Tensor的拼接与拆分的实现
2019/08/18 Python
使用PyOpenGL绘制三维坐标系实例
2019/12/24 Python
python使用python-pptx删除ppt某页实例
2020/02/14 Python
解决python3输入的坑——input()
2020/12/05 Python
python 监控服务器是否有人远程登录(详细思路+代码)
2020/12/18 Python
纯CSS3打造属于自己的“小黄人”
2016/03/14 HTML / CSS
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
中科软测试工程师面试题
2012/06/16 面试题
大学生实习期自我评价范文
2013/10/03 职场文书
文明家庭先进事迹材
2014/01/27 职场文书
主办会计岗位职责
2014/03/13 职场文书
Django一小时写出账号密码管理系统
2021/04/29 Python
为什么你写的height:100%不起作用
2021/05/10 HTML / CSS