关于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 私有成员分析
Jan 13 Javascript
jQuery中hover与mouseover和mouseout的区别分析
Dec 24 Javascript
jQuery插件开发精品教程让你的jQuery提升一个台阶
Jan 27 Javascript
jQuery点击输入框显示验证码图片
May 19 Javascript
jQuery实现摸拟alert提示框
May 22 Javascript
详谈JS中实现种子随机数及作用
Jul 19 Javascript
微信小程序 教程之数据绑定
Oct 18 Javascript
node.js请求HTTPS报错:UNABLE_TO_VERIFY_LEAF_SIGNATURE\的解决方法
Dec 18 Javascript
移动设备手势事件库Touch.js使用详解
Aug 18 Javascript
使用async、enterproxy控制并发数量的方法详解
Jan 02 Javascript
javascript实现考勤日历功能
Nov 29 Javascript
angular中如何绑定iframe中src的方法
Feb 01 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
ThinkPHP查询中的魔术方法简述
2014/06/25 PHP
php中explode的负数limit用法分析
2015/02/27 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
2017/07/13 PHP
PHP Class SoapClient not found解决方法
2018/01/20 PHP
thinkphp5.1框架容器与依赖注入实例分析
2019/07/23 PHP
Yii框架数据库查询、增加、删除操作示例
2019/10/14 PHP
JS的递增/递减运算符和带操作的赋值运算符的等价式
2007/12/08 Javascript
Mootools 图片展示插件(lightbox,ImageMenu)收集集合
2010/05/21 Javascript
js读取本地excel文档数据的代码
2010/11/11 Javascript
使用indexOf等在JavaScript的数组中进行元素查找和替换
2013/09/18 Javascript
JS中生成随机数的用法及相关函数
2016/01/09 Javascript
JS中Array数组学习总结
2017/01/18 Javascript
详解打造 Vue.js 可复用组件
2017/03/24 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
2017/09/14 Javascript
vue下history模式刷新后404错误解决方法
2018/08/18 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
优化Vue项目编译文件大小的方法步骤
2019/05/27 Javascript
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
2020/06/06 jQuery
解决iview table组件里的 固定列 表格不自适应的问题
2020/11/13 Javascript
[00:47]DOTA2荣耀之路6:玩不了啦!
2018/05/30 DOTA
linux系统使用python监测网络接口获取网络的输入输出
2014/01/15 Python
Python中unittest用法实例
2014/09/25 Python
Python的Tornado框架异步编程入门实例
2015/04/24 Python
python从网络读取图片并直接进行处理的方法
2015/05/22 Python
python3获取两个日期之间所有日期,以及比较大小的实例
2018/04/08 Python
python str字符串转uuid实例
2020/03/03 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
2020/06/24 Python
Python Map 函数的使用
2020/08/28 Python
Python模拟登录和登录跳转的参考示例
2020/10/30 Python
中专毕业生自荐信
2013/11/16 职场文书
保护环境的建议书
2014/03/12 职场文书
2014年城管个人工作总结
2014/12/08 职场文书
礼仪培训心得体会
2016/01/22 职场文书
Django实现WebSocket在线聊天室功能(channels库)
2021/09/25 Python
公历12个月名称的由来
2022/04/12 杂记
python中mongodb包操作数据库
2022/04/19 Python