关于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 相关文章推荐
9个JavaScript评级/投票插件
Jan 18 Javascript
只需20行代码就可以写出CSS覆盖率测试脚本
Apr 24 Javascript
使用JavaScript为Kindeditor自定义按钮增加Audio标签
Mar 18 Javascript
微信小程序 网络API发起请求详解
Nov 09 Javascript
JavaScript中校验银行卡号的实现代码
Dec 19 Javascript
Vuejs 组件——props数据传递的实例代码
Mar 07 Javascript
js中时间格式化的几种方法
Jul 22 Javascript
Vue常用指令详解分析
Aug 19 Javascript
vue-cli安装使用流程步骤详解
Nov 08 Javascript
微信小程序遍历Echarts图表实现多个饼图
Apr 25 Javascript
layui实现form表单同时提交数据和文件的代码
Oct 25 Javascript
vue 限制input只能输入正数的操作
Aug 05 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
国王的咖啡这么大来头,名字的由来是什么
2021/03/03 咖啡文化
PHP用GD库生成高质量的缩略图片
2011/03/09 PHP
PHP可逆加密/解密函数分享
2012/09/25 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
2015/12/31 PHP
php通过会话控制实现身份验证实例
2016/10/18 PHP
Yii2.0建立公共方法简单示例
2019/01/29 PHP
Laravel5.4框架使用socialite实现github登录的方法
2019/03/20 PHP
根据分辨率不同,调用不同的css文件
2006/07/07 Javascript
jquery调用asp.net 页面后台的实现代码
2011/04/27 Javascript
实现动画效果核心方式的js代码
2013/09/27 Javascript
JavaScript中String.match()方法的使用详解
2015/06/06 Javascript
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
第九篇Bootstrap导航菜单创建步骤详解
2016/06/21 Javascript
利用jquery正则表达式在页面验证url网址输入是否正确
2017/04/04 jQuery
jQuery选择器之表单元素选择器详解
2017/09/19 jQuery
浅谈vue中改elementUI默认样式引发的static与assets的区别
2018/02/03 Javascript
Vue中android4.4不兼容问题的解决方法
2018/09/04 Javascript
JsonProperty 的使用方法详解
2019/10/11 Javascript
详解vuejs中执行npm run dev出现页面cannot GET/问题
2020/04/26 Javascript
Python3.6日志Logging模块简单用法示例
2018/06/14 Python
Python 经典面试题 21 道【不可错过】
2018/09/21 Python
Python3 pip3 list 出现 DEPRECATION 警告的解决方法
2019/02/16 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
2020/03/14 Python
Python实现爬取并分析电商评论
2020/06/19 Python
10个python爬虫入门基础代码实例 + 1个简单的python爬虫完整实例
2020/12/16 Python
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
教师业务培训方案
2014/05/01 职场文书
优秀工会工作者事迹材料
2014/06/02 职场文书
亚运会口号
2014/06/20 职场文书
调研汇报材料范文
2014/08/17 职场文书
2014年统战工作总结
2014/12/09 职场文书
总经理岗位职责范本
2015/04/01 职场文书
2015年社区环境卫生工作总结
2015/04/21 职场文书
2015小学毕业班工作总结
2015/07/21 职场文书
员工规章制度范本
2015/08/07 职场文书
MySQL 分组查询的优化方法
2021/05/12 MySQL