关于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 BS,dialog控件自适应大小
Jul 06 Javascript
JS 日期比较大小的简单实例
Jan 13 Javascript
jQuery的$.proxy()应用示例介绍
Apr 03 Javascript
JS动态增加删除UL节点LI及相关内容示例
May 21 Javascript
JS控制层作圆周运动的方法
Jun 20 Javascript
Windows系统下安装Node.js的步骤图文详解
Nov 15 Javascript
概述javascript在Google IE中的调试技巧
Nov 24 Javascript
js实现网页定位导航功能
Mar 07 Javascript
Bootstrap-table自定义可编辑每页显示记录数
Sep 07 Javascript
vue路由前进后退动画效果的实现代码
Dec 10 Javascript
浅析vue-router实现原理及两种模式
Feb 11 Javascript
Vue插槽_特殊特性slot,slot-scope与指令v-slot说明
Sep 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
js下函数般调用正则的方法附代码
2008/06/22 PHP
php数字转汉字代码(算法)
2011/10/08 PHP
PHP实现异步调用方法研究与分享
2011/10/27 PHP
php通过session防url攻击方法
2014/12/10 PHP
PHP自定义多进制的方法
2016/11/03 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
慎用 somefunction.prototype 分析
2009/06/02 Javascript
javascript 拖放效果实现代码
2010/01/22 Javascript
javascript动态添加表格数据行(ASP后台数据库保存例子)
2010/05/08 Javascript
无阻塞加载脚本分析[全]
2011/01/20 Javascript
表单切换,用回车键替换Tab健(不支持IE)
2011/07/20 Javascript
文本有关的样式和jQuery求对象的高宽问题分别说明
2013/08/30 Javascript
jquery解决客户端跨域访问问题
2015/01/06 Javascript
js限制文本框的输入内容代码分享(3类)
2015/08/20 Javascript
jQuery实现切换页面过渡动画效果
2015/10/29 Javascript
JS控制层作圆周运动的方法
2016/06/20 Javascript
最原始的jQuery注册验证方式
2016/10/11 Javascript
全选复选框JavaScript编写小结(附代码)
2017/08/16 Javascript
JavaScript实现异步图像上传功能
2018/07/12 Javascript
Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结
2019/02/11 Javascript
JavaScript实现预览本地上传图片功能完整示例
2019/03/08 Javascript
解决vue中的无限循环问题
2020/07/27 Javascript
用Python编写web API的教程
2015/04/30 Python
Python中的下划线详解
2015/06/24 Python
Python实现获取命令行输出结果的方法
2017/06/10 Python
Python搭建FTP服务器的方法示例
2018/01/19 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
2019/08/06 Python
Python时间序列缺失值的处理方法(日期缺失填充)
2019/08/11 Python
Python测试Kafka集群(pykafka)实例
2019/12/23 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
基于python 凸包问题的解决
2020/04/16 Python
python import 上级目录的导入
2020/11/03 Python
工商学院毕业生个人自我评价
2013/09/19 职场文书
《小草和大树》教学反思
2014/02/16 职场文书
党员批评与自我批评思想汇报(集锦)
2014/09/14 职场文书