关于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 类
Nov 07 Javascript
JS window.opener返回父页面的应用
Oct 24 Javascript
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
Mar 16 Javascript
用JavaScript仿PS里的羽化效果代码
Dec 20 Javascript
JS中setTimeout()的用法详解
Apr 14 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
Jan 26 Javascript
javascript实现的HashMap类代码
Jun 27 Javascript
jQuery制作简洁的图片轮播效果
Apr 03 Javascript
详解JavaScript中getFullYear()方法的使用
Jun 10 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
Aug 18 Javascript
详解vue-router和vue-cli以及组件之间的传值
Jul 04 Javascript
Node.js原生api搭建web服务器的方法步骤
Feb 15 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/01/05 PHP
PHP批量采集下载美女图片的实现代码
2013/06/03 PHP
PHP实现的英文名字全拼随机排号脚本
2014/07/04 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
js玩一玩WSH吧
2007/02/23 Javascript
Javascript 布尔型分析
2008/12/22 Javascript
通过DOM脚本去设置样式信息
2010/09/19 Javascript
javascript级联下拉列表实例代码(自写)
2013/05/10 Javascript
js中复制行和删除行的操作实例
2013/06/25 Javascript
jQuery中add()方法用法实例
2015/01/08 Javascript
JavaScript 学习笔记之操作符(续)
2015/01/14 Javascript
javascript实现网页字符定位的方法
2015/07/14 Javascript
js判断当前页面用什么浏览器打开的方法
2016/01/06 Javascript
jQuery改变form表单的action,并进行提交的实现代码
2016/05/25 Javascript
JS实现拖动滚动条评分的效果代码分享
2016/09/29 Javascript
微信小程序 textarea 详解及简单使用方法
2016/12/05 Javascript
JSONP跨域请求
2017/03/02 Javascript
jQuery实现页面倒计时并刷新效果
2017/03/13 Javascript
Vue项目中ESlint规范示例代码
2019/07/04 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
2019/09/17 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
JS实现时间校验的代码
2020/05/25 Javascript
简单了解JavaScript arguement原理及作用
2020/05/28 Javascript
django 使用全局搜索功能的实例详解
2019/07/18 Python
CentOS7下安装python3.6.8的教程详解
2020/01/03 Python
Python如何通过Flask-Mail发送电子邮件
2020/01/29 Python
Python IDLE或shell中切换路径的操作
2020/03/09 Python
Python使用文件操作实现一个XX信息管理系统的示例
2020/07/02 Python
大客户销售经理职责
2013/12/04 职场文书
中专生职业生涯规划书范文
2014/01/10 职场文书
宗教学大学生职业生涯规划范文
2014/02/08 职场文书
租赁意向书范本
2014/04/01 职场文书
房屋转让协议书
2014/04/11 职场文书
篮球比赛策划方案
2014/06/05 职场文书
2015年公司国庆放假通知
2015/07/30 职场文书
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
2021/06/09 Python