js 队列实现
摘自:http://www.cnblogs.com/hustskyking/p/javascript-asynchronous-programming.html
/** * @author Barret Lee * @email barret.china@gmail.com * @description 事件隊(duì)列管理,含延時 */ var Q = {// 保存隊(duì)列信息a: [],// 添加到隊(duì)列 queueq: function(d){// 添加到隊(duì)列如果不是函數(shù)或者數(shù)字則不處理if(!/function|number/.test(typeof d)) return;Q.a.push(d);// 返回對自身的引用return Q;},// 執(zhí)行隊(duì)列 dequeued: function(){var s = Q.a.shift();// 如果已經(jīng)到了隊(duì)列盡頭則返回if(!s) return;// 如果是函數(shù),直接執(zhí)行,然后繼續(xù) dequeueif(typeof s === "function") {s(), Q.d();return;}// 如果是數(shù)字,該數(shù)字作為延遲時間,延遲 dequeuesetTimeout(function(){Q.d();}, s);} };var aa = {};Q .q(function(){aa.a = "aaaaaa";record("0 <i style='color:blue'>3s 之后搞定,0 把 1 叫進(jìn)來</i>"); }) .q(3000) // 延時 3s .q(function(){aa.b = "bbbb";record("1 <i style='color:blue'>2s 之后搞定,1 把 2 叫進(jìn)來</i>"); }) .q(2000) // 延時 2s .q(function(){aa.c = "cccc";record("2 <span style='color:red'>后面沒人了,OK,廁所關(guān)門~</span>"); }) .q(function(){console.log(aa); }) .d();
轉(zhuǎn)載于:https://my.oschina.net/tongjh/blog/278394
總結(jié)
- 上一篇: 48.检测对象是否为空
- 下一篇: 大容量导入和导出数据 -- 格式化文件生