Angularjs 基于$timeout延时加载js

项目采用Angularjs开发,可以通过Angulajs模块化组织项目代码,随着功能增加需要引入其他js框架越,有时候加载一个页面会报经典的“TypeError:Cannot read property 'xx' of undefined”错误。

项目未用requirejs保证js加载顺序,如果使用requirejs框架,需要重新配置所有js文件,项目进度又不允许。

那么想通过简单的办法抱枕类库延时加载,“投机取巧“的办法js模拟sleep函数演示页面加载,但是还是出现js未加载现象,并且影响用户体验。

后来,不影响用户体验用$q异步加载,模拟js模拟sleep函数换为Angularjs内部计时函数$timeout,时间间隔内js未加载函数通过函数递归继续校验。

function  checkLoad(){
     // 此属性就是js加载完后返回对象赋值给属性  
     // js加载返回对象略过......
     if  ( this .属性== null )
     {
 
          var  deferred = $q.defer();
          var  timer = $timeout( function () {
             deferred.resolve();
          }, 100, true );
         
          deferred.promise.then(
          function (){
              
              // 取消计时函数
              $timeout.cancel( timer);
              
              if ( this .属性!= null )
              {      
                 // 属性存在 
                 // 完成相关操作
              }
              else
                  // 函数递归调用
                  checkLoad();      
              }
           );
           
     }
     else
         // 属性存在
         // 完成相关操作
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值