JavaScript学习笔记(一)

延时加载这个在Web开发当中最常见的一种了

函数延时加载,图片延时加载……

在JavaScript的学习过程中自己写的函数延时加载,在这里记录一下

写的不好之处希望可以帮我指出,不胜感激(^_^)(^_^)

// 函数延时执行,完美兼容ie、谷歌、火狐等浏览器的各个版本
		function _delay(){
		    
		    function Delay(){
		        this.task = [];
		    }
		    Delay.prototype = {

		        then: function(fn, time){
		            this.task.push({fn: fn, time: time || 0});
		            return this;
		        },

		        run: function(){

		            var
		                _this = this,
		                len   = this.task.length,
		                task  = this.task.shift(),
		                next_task = this.task[0],
		                that;

		            (function(){
		                that = arguments.callee;
		                if (task.time > 0)
		                    task.fn(next_task.fn);
		                next_task = _this.task[0];
		                if (_this.task.length > 0) {
		                    if (task.time <= 0) {
		                        task.fn(that);
		                    }else{
		                        setTimeout(that, task.time);
		                    }
		                    task = _this.task.shift();
		                }
		            }());

		            return this;
		        }
		    }

		    return new Delay();
		}
		/**********************************
		 *******                ***********
		 *******   这是一个案例  **********
		 *******                ***********
		var delay = new _delay();

		delay
			.then(function(next) {
				alert('fn1是不是很郁闷呀');
			}, 2000)
			.then(function(next) {
				alert('不要太郁闷哟');
		        setTimeout(function() {
		            alert('fn2这么延时真的好郁闷哟')
		            next();
		        }, 3000)
		    })
		    .then(function(next) {
		        alert('fn3你可以开心的浏览咯:-D:-D:-D');
		    }, 1000)
		    .run();
		 *********************************/

上面的兼容性好,再来一个ES6的(^_^)(^_^)

//函数延时执行,虽然代码量少但不支持老版本浏览器
		function delayPromise(ms) {
		    return new Promise(function (resolve) {
		        setTimeout(resolve, ms);
		    });
		}
		/**********************************
		 *******                ***********
		 *******   这是一个案例  **********
		 *******                ***********
		 *
		delayPromise(1000).then(function(){
			console.log('1000ms后出现的弹窗,是不是很郁闷呀(*^_^*)(*^_^*)');
		});

		 *********************************/

转载于:https://my.oschina.net/quantou/blog/744361

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值