关于JS控制代码暂停的实现方法分享
关于JS控制代码暂停的实现方法分享
发布时间:2016-12-30 来源:查字典编辑
摘要:方法一:这是在网上找的一个方法,可以用。但说实话,这个方法我不怎么明白。。。写得好复杂。这样做跟setTimeout能有多大区别?复制代码代...

方法一:这是在网上找的一个方法,可以用。但说实话,这个方法我不怎么明白。。。写得好复杂。这样做跟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教程学习
编程开发子分类