关于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基础资料整理2
Dec 06 Javascript
js 中{},[]中括号,大括号使用详解
May 12 Javascript
JS 日期比较大小的简单实例
Jan 13 Javascript
24款热门实用的jQuery插件推荐
Dec 24 Javascript
有关Promises异步问题详解
Nov 13 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
Jan 27 Javascript
AngularJS教程 ng-style 指令简单示例
Aug 03 Javascript
JS全角与半角转化实例(分享)
Jul 04 Javascript
JavaScript数据结构之双向链表定义与使用方法示例
Oct 27 Javascript
JavaScript私有变量实例详解
Jan 24 Javascript
7个好用的JavaScript技巧分享(译)
May 07 Javascript
解决vue-cli 打包后自定义动画未执行的问题
Nov 12 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 删除数组元素
2009/01/16 PHP
memcached 和 mysql 主从环境下php开发代码详解
2010/05/16 PHP
php用header函数实现301跳转代码实例
2013/11/25 PHP
php对关联数组循环遍历的实现方法
2015/03/13 PHP
php格式文件打开的四种方法
2018/02/24 PHP
Laravel 5.4前后台分离,通过不同的二级域名访问方法
2019/10/13 PHP
Javascript中this关键字的一些小知识
2015/03/15 Javascript
bootstrap布局中input输入框右侧图标点击功能
2016/05/16 Javascript
jQuery+php实时获取及响应文本框输入内容的方法
2016/05/24 Javascript
JS Select下拉框(支持输入模糊查询)
2017/02/04 Javascript
详解使用vue脚手架工具搭建vue-webpack项目
2017/05/10 Javascript
JavaScript高级函数应用之分时函数实例分析
2018/08/03 Javascript
JS中的算法与数据结构之链表(Linked-list)实例详解
2019/08/20 Javascript
原生js实现3D轮播图
2020/03/21 Javascript
Vue如何实现监听组件原生事件
2020/07/03 Javascript
javascript实现雪花飘落效果
2020/08/19 Javascript
Vue3.0的优化总结
2020/10/16 Javascript
Python连接mssql数据库编码问题解决方法
2015/01/01 Python
Python中实现常量(Const)功能
2015/01/28 Python
python之pyqt5通过按钮改变Label的背景颜色方法
2019/06/13 Python
Python浮点数四舍五入问题的分析与解决方法
2019/11/19 Python
在python中logger setlevel没有生效的解决
2020/02/21 Python
python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例
2020/03/10 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
2020/04/22 Python
基于Python爬取股票数据过程详解
2020/10/21 Python
纯CSS3实现滚动的齿轮动画效果
2014/06/05 HTML / CSS
印度最大的酒店品牌网络:OYO Rooms
2016/07/24 全球购物
阿玛尼美国官方网站:Armani.com
2016/11/25 全球购物
美国休闲服装品牌:J.Crew Factory
2017/03/04 全球购物
机械制造毕业生求职信
2014/03/03 职场文书
《晚上的太阳》教学反思
2014/04/23 职场文书
植树节标语
2014/06/27 职场文书
2015年艾滋病宣传活动总结
2015/03/27 职场文书
2015年会计年终工作总结
2015/05/26 职场文书
python tkinter模块的简单使用
2021/04/07 Python
如何利用opencv判断两张图片是否相同详解
2021/07/07 Python