用js简单的实现一个异步队列

最近私事儿比较多,乱,每天心情都挺复杂的,已经很久没发东西了。总之废话不多说,我们来看看如何简单的实现一个异步队列吧。
在实现之前首先我们看看在什么情况下需要使用到异步队列?
在很多情况下,我们需要执行多个异步和同步混杂的函数或者都是异步函数(全是同步的就不说了,没有必要),这种情况下实际的执行情况并不是按照调用顺序来执行的。比如说我们先调用了异步函数a,接着调用了同步函数b,但是实际情况确实函数b先执行了,而a的结果在b执行完之后才得到。我们先看一下a,b的实际执行情况:点击这里查看Demo
在这种情况下,如果我们需要先执行完异步函数a,再执行同步或者异步函数b,这个时候就需要借助到异步队列了,下面的代码简单的实现了一个异步的队列:

;(function(w,d,undefined){
	var Queue = (function(){
		var queueLock = false,
			list = [];
		function enqueue(ev){
			list.push(ev);
		}
		function resolve(){
			queueLock = false;
		}
		function init(){
			setInterval(function(){
				if(list.length===0){
					resolve();
				}
				if(queueLock===false && list.length){
					queueLock = true;
					var curEv = list.shift();
					curEv();
				}
			});
		}
		return {
			init : init,
			enqueue : enqueue,
			resolve : resolve
		}
	})();
	if(!w.Queue){
		w.Queue = Queue;
	}
})(window,document);

点击这里查看异步队列Demo

  • 支付宝二维码 支付宝
  • 微信二维码 微信
相关文章