关于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 相关文章推荐
jQuery ready函数滥用分析
Feb 16 Javascript
页面刷新时记住滚动条的位置jquery代码
Jun 17 Javascript
c#+jquery实现获取radio和checkbox的值
Sep 12 Javascript
Node.js实现的简易网页抓取功能示例
Dec 05 Javascript
JSON简介以及用法汇总
Feb 21 Javascript
js实现可旋转的立方体模型
Oct 16 Javascript
js表单登陆验证示例
Oct 19 Javascript
几种响应式文字详解
May 19 Javascript
详解vue2父组件传递props异步数据到子组件的问题
Jun 29 Javascript
Vue filter介绍及其使用详解
Oct 21 Javascript
node.js自动上传ftp的脚本分享
Jun 16 Javascript
JS数据类型(基本数据类型、引用数据类型)及堆和栈的区别分析
Mar 04 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
Godaddy空间Zend Optimizer升级方法
2010/05/10 PHP
验证控件与Button的OnClientClick事件详细解析
2013/12/04 Javascript
JS比较2个日期间隔的示例代码
2014/04/15 Javascript
jquery中toggle函数交替使用问题
2015/06/22 Javascript
jQuery超赞的评分插件(8款)
2015/08/20 Javascript
jQuery实现的超简单点赞效果实例分析
2015/12/31 Javascript
javascript实现粘贴qq截图功能(clipboardData)
2016/05/29 Javascript
JS实现仿百度文库评分功能
2017/01/12 Javascript
javascript实现滑动解锁功能
2017/03/22 Javascript
基于javascript的异步编程实例详解
2017/04/10 Javascript
简单的vuex 的使用案例笔记
2018/04/13 Javascript
JavaScript解决浮点数计算不准确问题的方法分析
2018/07/09 Javascript
Vue Prop属性功能与用法实例详解
2019/02/23 Javascript
利用JavaScript的Map提升性能的方法详解
2019/08/14 Javascript
js实现一款简单踩白块小游戏(曾经很火)
2019/12/02 Javascript
详解vue-router 动态路由下子页面多页共活的解决方案
2019/12/22 Javascript
通过js实现压缩图片上传功能
2020/02/25 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
python笔记(1) 关于我们应不应该继续学习python
2012/10/24 Python
python脚本设置超时机制系统时间的方法
2016/02/21 Python
Python一句代码实现找出所有水仙花数的方法
2018/11/13 Python
使用matplotlib中scatter方法画散点图
2019/03/19 Python
python3的print()函数的用法图文讲解
2019/07/16 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
CSS3实现圆角、阴影、透明效果并兼容各大浏览器
2014/08/08 HTML / CSS
HTML5之SVG 2D入门11—用户交互性(动画)介绍及应用
2013/01/30 HTML / CSS
解析HTML5的存储功能和web SQL的相关操作方法
2016/02/19 HTML / CSS
Html5嵌入钉钉的实现示例
2020/06/04 HTML / CSS
金牌葡萄酒俱乐部:Gold Medal Wine Club
2017/11/02 全球购物
C语言面试题
2015/10/30 面试题
浪费资源的建议书
2014/03/12 职场文书
求职信内容怎么写
2014/05/26 职场文书
小学大队委竞选口号
2015/12/25 职场文书
如何制作自己的原生JavaScript路由
2021/05/05 Javascript
解决Vue+SpringBoot+Shiro跨域问题
2021/06/09 Vue.js
关于Redis的主从复制及哨兵问题
2022/06/16 Redis