关于JS控制代码暂停的实现方法分享

关于JS控制代码暂停的工作总结,需要的朋友可以参考下
方法一:这是在网上找的一个方法,可以用。但说实话,这个方法我不怎么明白。。。写得好复杂。这样做跟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); 



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值