关于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自动给文本url地址增加链接的方法分享
Jan 20 Javascript
JS在可编辑的div中的光标位置插入内容的方法
Nov 20 Javascript
javascript相关事件的几个概念
May 21 Javascript
JavaScript组件开发之输入框加候选框
Mar 10 Javascript
使用vue-cli创建项目的图文教程(新手入门篇)
May 02 Javascript
vue 录制视频并压缩视频文件的方法
Jul 27 Javascript
微信小程序实现多选框全选与取消全选功能示例
May 14 Javascript
JavaScript变量作用域及内存问题实例分析
Jun 10 Javascript
微信小程序自定义弹窗实现详解(可通用)
Jul 04 Javascript
使用axios请求时,发送formData请求的示例
Oct 29 Javascript
JS写滑稽笑脸运动效果
May 28 Javascript
浅谈克隆 JavaScript
Nov 02 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中的 == 运算符进行字符串比较
2006/11/26 PHP
一些php技巧与注意事项分析
2011/02/03 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
php switch语句多个值匹配同一代码块应用示例
2014/07/29 PHP
PHP中使用sleep函数实现定时任务实例分享
2014/08/21 PHP
jQuery select控制插件
2009/08/17 Javascript
JS字符串函数扩展代码
2011/09/13 Javascript
js 数值转换为3位逗号分隔的示例代码
2014/02/19 Javascript
jQuery图片切换插件jquery.cycle.js使用示例
2014/06/16 Javascript
javascript关于open.window子页面执行完成后刷新父页面的问题分析
2015/04/27 Javascript
js实现图片无缝滚动特效
2020/03/19 Javascript
js实现仿购物车加减效果
2017/03/01 Javascript
JavaScript定义函数_动力节点Java学院整理
2017/06/27 Javascript
详解如何使用webpack+es6开发angular1.x
2017/08/16 Javascript
js实现简单数字变动效果
2017/11/06 Javascript
bootstrap paginator分页插件的两种使用方式实例详解
2017/11/14 Javascript
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
angular 用Observable实现异步调用的方法
2018/12/27 Javascript
vue data变量相互赋值后被实时同步的解决步骤
2020/08/05 Javascript
JavaScript实现简单验证码
2020/08/24 Javascript
基于vue与element实现创建试卷相关功能(实例代码)
2020/12/07 Vue.js
Windows下安装python2.7及科学计算套装
2015/03/05 Python
Python numpy 提取矩阵的某一行或某一列的实例
2018/04/03 Python
python3 判断列表是一个空列表的方法
2018/05/04 Python
浅谈numpy生成数组的零值问题
2018/11/12 Python
python如何制作缩略图
2019/04/30 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
Python常用模块logging——日志输出功能(示例代码)
2019/11/20 Python
办公室文秘自我评价
2013/09/21 职场文书
优秀员工自荐信范文
2013/10/05 职场文书
写自荐信的注意事项
2014/03/09 职场文书
学生检讨书如何写
2014/10/30 职场文书
甲午风云观后感
2015/06/02 职场文书
《爬天都峰》教学反思
2016/02/23 职场文书
如何使用Python实现一个简易的ORM模型
2021/05/12 Python
MySQL大小写敏感的注意事项
2021/05/24 MySQL