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
        // 属性存在
        // 完成相关操作
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值