javascript队列执行池类初探
2015-05-15 10:54
393 查看
javascript队列执行池类初探
在业务逻辑中,有时会遇到这样的逻辑,需要按一定的顺序执行一系列方法,而这一系列方法的个数不确定,执行时间是必须等上一个方法执行完,有时需要取消队列中还没有执行的方法,有时需要暂停队列执行,这样功能的一个类如果用javascript实现,我给起个名字叫:javascript队列执行池。思路:
用一个数组保存要执行的function,定期检查数组,如果有function,按顺序执行每一个function,执行过程中可以通过状态控制执行是否停止.代码:
<html> <head> <meta charset="utf-8"> </head> <body> <div id="dis"></div> <div id="play" style="cursor: pointer">开始</div> <script> function ExecutePool() {//执行池类 this.executeState = false;//执行状态 this.fnContainer = []; //池容器 var _this = this; //保存this对象 this.addFn = function (fnobj) { //向池里添加方法 _this.fnContainer.push(fnobj); } this.reset = function () { //重置 _this.this.fnContainer = []; _this.executeState = false; } this.pause = function () {//暂停 if (_this.executeState) { _this.executeState = false; } } this.start = function (wt) {//执行 wt:两方法执行间隔时间(毫秒) _this.executeState = true; (function () { if (_this.executeState) { if (_this.fnContainer.length > 0) { _this.fnContainer[0](); _this.fnContainer.shift(); } window.setTimeout(arguments.callee, (wt || 50)); } })(); } } //测试 1,添加两个方法 2,暂停 3,添加一个方法 4,执行 var xcs = new ExecutePool(); xcs.addFn(function () { document.getElementById("dis").innerHTML = "aaa"; }); xcs.addFn( function () { document.getElementById("dis").innerHTML = "ddd"; }); xcs.start(1000); xcs.pause(); xcs.addFn(function () { document.getElementById("dis").innerHTML = '结束'; }); document.getElementById("play").onclick = function () { xcs.start(1000); } </script> </body> </html>
后记:
1,动画js库可以用这种模式,使用户不必关心怎么样执行,只改变状态,就自动执行.2,在添加的方法中如果调用setTimeout方法,顺序会错乱.
3,这是我初步想法,以后完善,如有好的建议给我私信.
相关文章推荐
- setTimeout的原理及在JavaScript线程执行队列中的位置
- JavaScript 函数队列按时间间隔顺序执行
- JavaScript队列函数和异步执行详解
- Javascript在页面加载时的执行顺序
- javascript系列1--把字符串当代码来执行
- C#中使用javascript 打开新窗口(执行JAVASCRIPT)
- 网页调试:myeclipse修改javascript代码后,执行没有变化呀
- JavaScript 的性能优化:加载和执行
- Python爬虫(二十四)_selenium案例:执行javascript脚本
- javascript针对不确定函数的执行方法
- 验证了javascript代码在页面中的执行顺序
- 引用:初探Sql Server 执行计划及Sql查询优化
- html 和 javascript 的相关执行顺序
- IE6 调用gzip压缩后JavaScript不执行的解决方法
- [高性能JavaScript] 第1章 加载和执行
- Java执行JavaScript代码
- 为什么写在Iframe中 的关于Cookie的javascript代码不会被执行,而且Iframe的页面如果是jsp写的,也不可以用response对象写入Cookie!
- javascript 获得执行时间
- 小工具开发笔记—IE自动填表器 -- 第二篇:执行一段JavaScript脚本
- 理解javascript原型和作用域系列(8)——简述【执行上下文】