- 浏览: 252526 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
dhunter:
mongodb 需要auth 怎么加呢?
linux下mongodb+nodejs环境搭建 -
y1d2y3xyz:
xie666 写道html.push('<td alig ...
javascript DOM操作性能-----创建DOM -
xie666:
html.push('<td align="c ...
javascript DOM操作性能-----创建DOM -
轩辕丶菓菓:
<div class="quote_title ...
Ext表单之loadRecord用法详解 -
heikediguo:
这样不会按照你想要的顺序加载。
加载JS文件
/** * @class Ext.util.TaskRunner * @description 模拟多线程的JS类 //一个简单的更新闹钟时间的任务 var updateClock = function(){ Ext.fly('clock').update(new Date().format('g:i:s A')); } var task = { run: updateClock, interval: 1000 //1 秒 } var runner = new Ext.util.TaskRunner();//实例化一个线程管理器 runner.start(task);//开始执行task线程 //下面是简易的写法 Ext.TaskMgr.start({ run: updateClock, interval: 1000 }); * 对比查看{@link Ext.util.DelayedTask}. * @constructor * @param {Number} interval 这个设置线程管理器的执行时间,默认为10毫秒 * (defaults to 10) */ Ext.util.TaskRunner = function(interval){ interval = interval || 10; var tasks = [], //任务集合 removeQueue = [],//被移除的任务 id = 0,//定时器ID running = false,//是否正在执行 // private stopThread = function(){//停止执行,并把running 和 id 重置 running = false; clearInterval(id); id = 0; }, // private startThread = function(){//开始执行,确定当前进程还没执行 if(!running){ running = true; id = setInterval(runTasks, interval); } }, // private removeTask = function(t){//删除进程, removeQueue.push(t);//把不要再执行的进程放到removeQueue数组中,以等待下次执行其他进程的时候把删除掉 if(t.onStop){//进程停止后的回调函数 t.onStop.apply(t.scope || t); } }, // private runTasks = function(){ var rqLen = removeQueue.length,//获取被 now = new Date().getTime(); if(rqLen > 0){ for(var i = 0; i < rqLen; i++){ tasks.remove(removeQueue[i]);//把removeQueue中的值从tasks中移除 } removeQueue = [];//重新重置 removeQueue if(tasks.length < 1){//如果进程数为0,那直接返回,并停止当前正在执行的进程 stopThread(); return; } } for(var i = 0, t, itime, rt, len = tasks.length; i < len; ++i){ t = tasks[i]; itime = now - t.taskRunTime;//当前时间 - 线程的最后一次运行的时间 //因为这个函数默认的interval为10,也就是整个线程实例是每隔10毫秒会去监控一次是否有需要运行的任务, //这样做的原因是保障每个任务的定时器可以不一样,但都能执行得到,这就是这个函数能支持多个定时任务的原因所在,其实也就是模拟了多线程 if(t.interval <= itime){ rt = t.run.apply(t.scope || t, t.args || [++t.taskRunCount]); t.taskRunTime = now;//重新更新当前线程的执行时间 //如果线程结束,则删除当前线程 if(rt === false || t.taskRunCount === t.repeat){ removeTask(t); return; } } //如果存在 duration 并且已经超出了执行时间了,比如我要求这个线程执行时间 即duration 为一分钟, //那么我这个任务已经执行时间(当前时间 - 线程开始执行的时间)必须小于 一分钟,否则的话那这个线程就得删除 if(t.duration && t.duration <= (now - t.taskStartTime)){ removeTask(t); } } }; /** * Starts a new task. * @method start * @param {Object} task 配置属性:<ul> * <li>run : Function 每次执行的回调函数,参数为 下面的 args 或者 当前线程被执行的次数 </li> * <li>args : Array 这个值穿给上面的function</li> * <li>scope : Object 线程执行的作用域 默认为当前的线程 </li> * <li>duration : Number (optional) 执行的时长,单位是毫秒</li> * <li>repeat : Number(optional) 线程执行的次数</li> * </ul> * @return {Object} The task */ this.start = function(task){ tasks.push(task); task.taskStartTime = new Date().getTime();//线程开始执行的时间 task.taskRunTime = 0;//线程执行的的时间 这个是以毫秒为单位的数字 1000便是一秒 task.taskRunCount = 0;//线程执行的次数 startThread(); return task; }; /** * @description 停止某个线程执行 * @method stop * @param {Object} task 被停止的线程 * @return {Object} 返回被停止的线程 */ this.stop = function(task){ removeTask(task); return task; }; /** * @description 停止所有线程. * @method stopAll */ this.stopAll = function(){ stopThread(); for(var i = 0, len = tasks.length; i < len; i++){ if(tasks[i].onStop){ tasks[i].onStop(); } } tasks = []; removeQueue = []; }; }; //多线程实例化对象 Ext.TaskMgr = new Ext.util.TaskRunner();
发表评论
-
Extjs源码之--Ext事件机制/继承关系
2011-10-16 16:36 1818Extjs源码之--Ext.lib.Event 中分析了EX ... -
Extjs源码之--Ext.lib.Event(事件的简单封装)
2011-10-16 11:34 2611这个对象是对事件的基础封装,在实际使用中,我们往往不从这里去 ... -
Extjs源码之--Ext.lib.Dom(Dom的基本封装)
2011-10-13 23:31 2309Extjs的对Dom最基础的封装,主要包括:元素的包含关系,元 ... -
Extjs源码之---Ext.util.DelayedTask
2011-10-12 22:56 2391/* 创建对象 var task = new Ext. ... -
Extjs源码之-- Ext.util.JSON
2011-09-23 23:19 3989很多写extjs的朋友说,Extjs的源码之间的关系太紧了,所 ... -
Ext.form.ComboBox 远程带分页显示
2011-09-23 22:00 1831很多时候针对大数据量的下拉列表的时候,我们通常需要分页显示数据 ... -
Ext.form.ComboBox change事件的BUG
2011-09-08 23:11 5344因为项目需要,想用Ext的combo控件实现动态级联,发现co ... -
Ext.grid.EditorGridPanel 中combo的显示异常
2011-09-03 00:58 2736Ext.grid.EditorGridPanel 在项目中用到 ... -
extjs源码分析-016(Ext....)
2011-03-28 23:04 1011Ext.apply(Ext, function(){ ... -
extjs源码分析-015(Number扩展)
2011-03-20 01:03 831Ext.applyIf(Number.prototype, ... -
extjs源码分析-013(Array扩展)
2011-03-19 11:03 1076Ext.applyIf(Array.prototype, ... -
extjs源码分析-013(String扩展)
2011-03-18 23:05 1213//字符串替换 /* var cls = 'my-cl ... -
extjs源码分析-012(Funtion扩展)
2011-03-18 22:42 1250Ext.apply(Function.prototype, ... -
extjs源码分析-011(namespace)
2011-03-10 22:54 1042//命名空间,就是创建一个OBJ的一个属性, names ... -
extjs源码分析-009(Ext.urlAppend/toArray)
2011-03-10 22:43 1814//在URL后面追加参数 urlAppend : fun ... -
extjs源码分析-009(Ext.urlDecode/urlEncode)
2011-03-09 23:17 3186//把json格式转化成url的编码方式 // e.g. ... -
extjs源码分析-008(Ext.removeNode)
2011-03-09 22:35 1739DOC = document; removeNode : ... -
extjs源码分析-007(Ext.each)
2011-02-08 14:40 1574each : function(array, fn ... -
extjs源码分析-006(Ext.override/Ext.extend)
2011-02-08 00:40 2084override : function(o ... -
extjs源码分析-005(Ext.getDom,Ext.getBody)
2011-02-08 00:22 2001var DOC = document; //获取DOM节 ...
相关推荐
extjs多选下拉框,Ext.ux.form.LovCombo,extjs 以修复多选下拉框火狐下取不到值的问题,火狐下div不显示背景色的问题
extjs-basex.js extjs-basex.js extjs-basex.js
extjs-theme-bootstrap-master.zip
从spket IDE 官网下载。 文件名: ext-4.2.1.883.jsb2 对应版本ext-4.2.*版本。spket自动提示ExtJs4,需要ext4.2.1.jsp2文件。
EXTJS-4.2.1.883
ExtJs学习资料28-Ext.data.JsonStore数据存储器
extjs-620-docs官方文档extjs-620-docs官方文档extjs-620-docs官方文档
ext 是 ExtJs 的简称,是一个强大的js 类库。本资源主要包括三个大的文件ext-all.css,ext-base.js,ext-al.js。在引用ext 类库的时候,这三个文件必不可少。另外我还提供了ext2的一个简单例子,以便大家学习交流。
官方最新版本Extjs6.2版本sdk,创建新项目的时候需要用, 全面的核心框架,具有最新的Javascript标准支持 新的漂亮组件和主题,以创建漂亮的企业应用程序 现代工具链,用于构建优化,高性能,通用的应用程序 用于可视...
ExtJS-4.2.2-gpl.rar完整版,包含源码,示例,api,文档
Extjs3.4 Ext-core.pdf 轻松搞定Extjs.pdf Extjs学习笔记 里面有3.4的开发包,附属:Ext-core.pdf 轻松搞定Extjs.pdf Extjs学习笔记
extjs-mvc-architecture.pdf
1. ExtJs2.0学习系列(1)--Ext.MessageBox 2. ExtJs2.0学习系列(2)--Ext.Panel 3. ExtJs2.0学习系列(3)--Ext.Window 4. ExtJs2.0学习系列(4)--Ext.FormPanel之第一式 5. ExtJs2.0学习系列(5)--Ext.FormPanel之第二式 ...
Ext JS 6最大的变化就是将Ext JS和Touch合并为一个单一的框架。之前的框架的核心(数据、控制器、模型等等)已被调和为一个单一的公共平台。这样,数据和逻辑就能共享,从而帮助开发人员进一步去优化他们的应用程序...
ext-7.0.0-gpl.zip
在CDH使用oozie 的时候需要安装ext-2.2.zip; 新增和改进的功能包括: 1、FileUploadField 文件上传 体验例子见:http://extjs.com/deploy/dev/examples/form/file-upload.html 2、GMapPanel GMap扩展 体验...
Extjs4.1多个扩展 1、Ext.ux.aceeditor.Panel 2、Ext.ux.grid.feature.Tileview 3、Ext.ux.upload.Button 4、Ext.ux.toggleslide.ToggleSlide 5、Ext.ux.container.ButtonSegment 6、Ext.ux.grid.plugin.RowEditing ...
extjs+commons-fileupload.jar 实现文件上传,能够支持多文件同时上串,在配置文件中配置临时文件夹和保存的路径
extjs-basex.js extjs-basex.js extjs-basex.js
extjs4.0开发人员以及学习可以下载参考