关于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 相关文章推荐
自动检查并替换文本框内的字符
Jun 30 Javascript
禁止iframe页面的所有js脚本如alert及弹出窗口等
Sep 03 Javascript
JavaScript Window浏览器对象模型方法与属性汇总
Apr 20 Javascript
JS+CSS实现仿msn风格选项卡效果代码
Oct 22 Javascript
JQuery.Ajax()的data参数类型实例详解
Nov 20 Javascript
javascript输出AscII码扩展集中的字符方法
Dec 26 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
Apr 11 Javascript
jQuery使用正则验证15/18身份证的方法示例
Apr 27 jQuery
JavaScript字符串_动力节点Java学院整理
Jun 27 Javascript
jQuery实现的简单对话框拖动功能示例
Jun 05 jQuery
微信小程序缓存支持二次开发封装实现解析
Dec 16 Javascript
vue开发简单上传图片功能
Jun 30 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中获得视频时间总长度的另一种方法
2011/09/15 PHP
PHP中使用sleep函数实现定时任务实例分享
2014/08/21 PHP
php实现大文件断点续传下载实例代码
2019/10/01 PHP
抽出www.templatemonster.com的鼠标悬停加载大图模板的代码
2007/07/11 Javascript
javascript:void(0)的真正含义实例分析
2008/08/20 Javascript
Ext grid 添加右击菜单
2009/11/26 Javascript
div+css布局的图片连续滚动js实现代码
2010/05/04 Javascript
js弹出层包含flash 不能关闭隐藏的2种处理方法
2013/06/17 Javascript
JS、CSS加载中的小问题探讨
2013/11/26 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
2016/03/11 Javascript
浅析JavaScript回调函数应用
2016/05/22 Javascript
老生常谈javascript的类型转换
2016/10/12 Javascript
JavaScript中Math对象的方法介绍
2017/01/05 Javascript
jQuery.cookie.js使用方法及相关参数解释
2017/03/06 Javascript
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
详解webpack进阶之插件篇
2017/07/06 Javascript
详解离线安装npm包的几种方法
2018/11/25 Javascript
深入koa-bodyparser原理解析
2019/01/16 Javascript
搭建一个nodejs脚手架的方法步骤
2019/06/28 NodeJs
WebPack工具运行原理及入门教程
2020/12/02 Javascript
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
2019/08/28 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
基于MUI框架使用HTML5实现的二维码扫描功能
2018/03/01 HTML / CSS
Omio荷兰:预订火车、巴士和机票
2018/11/04 全球购物
大四自我鉴定范文
2013/10/06 职场文书
单位未婚证明范本
2014/01/18 职场文书
新闻学专业个人求职信写作
2014/02/04 职场文书
乡镇创先争优活动总结
2014/08/28 职场文书
安全生产年活动总结
2014/08/29 职场文书
个人授权委托书模板
2014/09/14 职场文书
中国文明网向国旗敬礼活动精彩寄语2014
2014/09/27 职场文书
正规借条模板
2015/05/26 职场文书
永远是春天观后感
2015/06/12 职场文书
Python中else的三种使用场景
2021/06/16 Python
详解Python flask的前后端交互
2022/03/31 Python