关于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脚本语言在网页中的简单应用
May 13 Javascript
jquery向上向下取整适合分页查询
Sep 06 Javascript
javascript学习笔记(五)原型和原型链详解
Oct 08 Javascript
理解javascript回调函数
Dec 28 Javascript
浅析JavaScript中作用域和作用域链
Dec 06 Javascript
JavaScript用构造函数如何获取变量的类型名
Dec 23 Javascript
ES6新特性七:数组的扩充详解
Apr 21 Javascript
微信小程序中显示html格式内容的方法
Apr 25 Javascript
JSX在render函数中的应用详解
Sep 04 Javascript
layui 实现表格某一列显示图标
Sep 19 Javascript
100行代码实现vue表单校验功能(小白自编)
Nov 19 Javascript
js节流防抖应用场景,以及在vue中节流防抖的具体实现操作
Sep 21 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
模仿OSO的论坛(一)
2006/10/09 PHP
php生成图片验证码的实例讲解
2015/08/03 PHP
PHP Echo字符串的连接格式
2016/03/07 PHP
PHP简单实现欧拉函数Euler功能示例
2017/11/06 PHP
浅谈php://filter的妙用
2019/03/05 PHP
jQuery 判断页面元素是否存在的代码
2009/08/14 Javascript
js 用CreateElement动态创建标签示例
2013/11/20 Javascript
Nodejs学习笔记之Global Objects全局对象
2015/01/13 NodeJs
JS实现鼠标滑过折叠与展开菜单效果代码
2015/09/06 Javascript
Java Mybatis框架入门基础教程
2015/09/21 Javascript
基于jQuery实现复选框是否选中进行答题提示
2015/12/10 Javascript
Bootstrap列表组学习使用
2017/02/09 Javascript
vue 1.x 交互实现仿百度下拉列表示例
2017/10/21 Javascript
详解js中Array的方法及技巧
2018/09/12 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
自动化Nginx服务器的反向代理的配置方法
2015/06/28 Python
Python 网页解析HTMLParse的实例详解
2017/08/10 Python
python3调用R的示例代码
2018/02/23 Python
从django的中间件直接返回请求的方法
2018/05/30 Python
python实现飞机大战
2018/09/11 Python
python一键去抖音视频水印工具
2018/09/14 Python
python得到单词模式的示例
2018/10/15 Python
python引入不同文件夹下的自定义模块方法
2018/10/27 Python
在Python中分别打印列表中的每一个元素方法
2018/11/07 Python
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
2019/01/05 Python
Python如何实现强制数据类型转换
2019/11/22 Python
Python for循环搭配else常见问题解决
2020/02/11 Python
Python yield生成器和return对比代码实例
2020/04/20 Python
莫斯科隐形眼镜网上商店:Linzi
2019/07/22 全球购物
Lungolivigno Fashion官网:高级时装在线购物
2020/10/17 全球购物
班组长竞聘书
2014/03/31 职场文书
省级青年文明号申报材料
2014/05/23 职场文书
关于工作经历的证明书
2014/10/11 职场文书
2014工程部年度工作总结
2014/12/17 职场文书
协议书范文
2015/01/27 职场文书
市级三好生竞选稿
2015/11/21 职场文书