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 相关文章推荐
JavaScript作用域链使用介绍
Aug 29 Javascript
深入理解JS中的变量及作用域、undefined与null
Mar 04 Javascript
IE下双击checkbox反应延迟问题的解决方法
Mar 27 Javascript
javascript实现选中复选框后相关输入框变灰不可用的方法
Aug 11 Javascript
深入浅析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性
Dec 16 Javascript
使用JavaScript脚本判断页面是否在微信中被打开
Mar 06 Javascript
如何通过js实现图片预览功能【附实例代码】
Mar 30 Javascript
基于iscroll.js实现下拉刷新和上拉加载效果
Nov 28 Javascript
详解angularjs中如何实现控制器和指令之间交互
May 31 Javascript
纯JavaScript实现实时反馈系统时间
Oct 26 Javascript
webpack 处理CSS资源的实现
Sep 27 Javascript
Vue实现页面添加水印功能
Nov 09 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中使用gettext来支持多语言的方法
2011/05/02 PHP
php笔记之:php函数range() round()和list()的使用说明
2013/04/26 PHP
基于PHP Socket配置以及实例的详细介绍
2013/06/13 PHP
thinkphp获取栏目和文章当前位置的方法
2014/10/29 PHP
又十个超级有用的PHP代码片段
2015/09/24 PHP
php metaphone()函数的定义和用法
2016/05/15 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
2016/09/22 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
2017/03/06 PHP
js中更短的 Array 类型转换
2011/10/30 Javascript
ajax的hide隐藏问题解决方法
2012/12/11 Javascript
最简单的tab切换实例代码
2016/05/13 Javascript
第一次接触神奇的Bootstrap导航条
2016/08/09 Javascript
js判断文件类型大小并给出提示的实现方法
2018/01/03 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
2018/03/18 Javascript
详解vue中的computed的this指向问题
2018/12/05 Javascript
微信小程序移动拖拽视图-movable-view实例详解
2019/08/17 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
js实现随机点名
2021/01/19 Javascript
[04:52]2015国际邀请赛LGD战队晋级之路
2015/08/14 DOTA
python中的一些类型转换函数小结
2013/02/10 Python
2款Python内存检测工具介绍和使用方法
2014/06/01 Python
python的Template使用指南
2014/09/11 Python
详解Python中open()函数指定文件打开方式的用法
2016/06/04 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
2017/05/25 Python
Python实现矩阵转置的方法分析
2017/11/24 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
2019/12/18 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
2020/04/24 Python
Python-opencv实现红绿两色识别操作
2020/06/04 Python
Python之Matplotlib文字与注释的使用方法
2020/06/18 Python
pytorch 多分类问题,计算百分比操作
2020/07/09 Python
网络专业学生个人的自我评价
2013/12/16 职场文书
捐款倡议书格式范文
2014/05/14 职场文书
2016年“世界环境日”校园广播稿
2015/12/18 职场文书
2016年先进班集体事迹材料
2016/02/26 职场文书
Mybatis是这样防止sql注入的
2021/12/06 Java/Android
Python中字符串对象语法分享
2022/02/24 Python