关于JS控制代码暂停的实现方法分享


Posted in Javascript onOctober 11, 2012

方法一:这是在网上找的一个方法,可以用。但说实话,这个方法我不怎么明白。。。写得好复杂。这样做跟setTimeout能有多大区别?

function Pause(obj, iMinSecond) { 
if (window.eventList == null ) window.eventList = new Array(); 
var ind = -1; 
for (var i = 0; i < window.eventList.length; i++) { 
if (window.eventList[i] == null ) { 
window.eventList[i] = obj; 
ind = i; 
break; 
} 
} 
if (ind == -1) { 
ind = window.eventList.length; 
window.eventList[ind] = obj; 
} 
setTimeout( "GoOn(" + ind + ")" , iMinSecond); 
} 
function GoOn(ind) { 
var obj = window.eventList[ind]; 
window.eventList[ind] = null; 
if (obj.NextStep) obj.NextStep(); 
else obj(); 
} 
function testJsStop() { 
alert( "1"); 
Pause( this, 3000); 
this.NextStep = function () { 
alert( "2"); 
} 
}

方法二:这也是在网上找的,可以用。它的原理是先弹出一个窗口,因为JS在弹出窗口时,代码会在当前位置暂停执行。等过了一段时间后再执行关闭窗口函数,代码继续执行。这中方法非常简单,但令人讨厌的是它会弹出一个窗口。。。
function pause(numberMillis) { 
addcloud(); 
var dialogScript = 'window.setTimeout(' + ' function () { $("#bgDiv").remove(); }, ' + numberMillis + ');'; 
var result = window.showModalDialog('javascript:document.writeln(' + '"<script>' + dialogScript + '<' + '/script>")' ); 
} 
function test() { 
var a = 0; 
alert(a); 
pause(5000); 
a = 999; 
alert(a); 
}

方法三:这个方法是我自己写的。因为我要实现的功能比较复杂,要循环调用getpath()方法。而前面的两种方法都只能应用在顺序执行的代码段中,无法控制循环。在这里我采用了前后台结合的方法。在前台通过Ajax调用后台方法,直接将线程挂起1s,成而实现JS代码强制暂停。
前台JS:
function getpath() { 
var time = 1000; 
$.ajaxSettings.async = false; 
$.getJSON( "../Actions/TspHandler.ashx?rKey=" + parseInt(Math.random() * 999 + 1).toString() + "&opKey=Sleep" 
+ "&Time=" + time, 
null, 
function (json) { 
}); 
.......... 
}

后台ashx:
if (methodname == "Sleep" )//休眠 
{ 
int time = int .Parse(req["Time"].ToString()); 
System.Threading. Thread.Sleep(time); 
}

以上仅供大家参考,欢迎吐槽!
Javascript 相关文章推荐
javascript数组使用调用方法汇总
Dec 08 Javascript
js 刷新页面的代码小结 推荐
Apr 02 Javascript
JavaScript 放大镜 放大倍率和视窗尺寸
May 09 Javascript
推荐11款jQuery开发的复选框和单选框美化插件
Aug 02 Javascript
jQuery悬停文字提示框插件jquery.tooltipster.js用法示例【附demo源码下载】
Jul 19 Javascript
node.js的事件机制
Feb 08 Javascript
VueJs使用Amaze ui调整列表和内容页面
Nov 30 Javascript
js读取本地文件的实例
Dec 22 Javascript
详解性能更优越的小程序图片懒加载方式
Jul 18 Javascript
vuex如何重置所有state(可定制)
Jan 17 Javascript
js实现中文实时时钟
Jan 15 Javascript
在react项目中使用antd的form组件,动态设置input框的值
Oct 24 Javascript
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
Oct 11 #Javascript
js函数的延迟加载实现代码
Oct 11 #Javascript
javascript中方便增删改cookie的一个类
Oct 11 #Javascript
js事件(Event)知识整理
Oct 11 #Javascript
JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性
Oct 11 #Javascript
JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
Oct 11 #Javascript
JavaScript高级程序设计(第3版)学习笔记11 内建js对象
Oct 11 #Javascript
You might like
php防盗链的常用方法小结
2010/07/02 PHP
如何用php获取程序执行的时间
2013/06/09 PHP
thinkphp模板的包含与渲染实例分析
2014/11/26 PHP
php实现根据IP地址获取其所在省市的方法
2015/04/30 PHP
JSON 学习之完全手册 图文
2007/05/29 Javascript
jquery animate 动画效果使用说明
2009/11/04 Javascript
一个可绑定数据源的jQuery数据表格插件
2010/07/17 Javascript
Knockout数组(observable)使用详解示例
2013/11/15 Javascript
jQuery实现鼠标可拖动调整表格列宽度
2014/05/26 Javascript
javascript对中文按照拼音排序代码
2014/08/20 Javascript
Jquery弹出层插件ThickBox的使用方法
2014/12/09 Javascript
nodejs中的fiber(纤程)库详解
2015/03/24 NodeJs
jquery实现表格隔行换色效果
2015/11/19 Javascript
深入浅析AngularJS和DataModel
2016/02/16 Javascript
Javascript表单特效之十大常用原理性样例代码大总结
2016/07/12 Javascript
利用JS实现页面删除并重新排序功能
2016/12/09 Javascript
浅谈sass在vue注意的地方
2017/08/10 Javascript
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
使用vue-cli webpack 快速搭建项目的代码
2018/11/21 Javascript
如何使用50行javaScript代码实现简单版的call,apply,bind
2019/08/14 Javascript
Python中的高级数据结构详解
2015/03/27 Python
图文详解WinPE下安装Python
2016/05/17 Python
python动态文本进度条的实例代码
2020/01/22 Python
python梯度下降算法的实现
2020/02/24 Python
python获取时间戳的实现示例(10位和13位)
2020/09/23 Python
Melijoe时尚童装德国官网:Melijoe德国
2016/09/03 全球购物
欧洲最大的球衣网上商店:Kitbag
2017/11/11 全球购物
Cinque网上商店:德国服装品牌
2019/03/17 全球购物
暑假实习求职信范文
2013/09/22 职场文书
2014年教育培训工作总结
2014/12/08 职场文书
简单的辞职信怎么写
2015/02/28 职场文书
有关三国演义的读书笔记
2015/06/25 职场文书
Python OpenCV快速入门教程
2021/04/17 Python
使用Golang的channel交叉打印两个数组的操作
2021/04/29 Golang
python 利用PyAutoGUI快速构建自动化操作脚本
2021/05/31 Python
JavaScript的function函数详细介绍
2021/11/20 Javascript