首頁  >  文章  >  web前端  >  關於JS控製程式碼暫停的實作方法分享_javascript技巧

關於JS控製程式碼暫停的實作方法分享_javascript技巧

WBOY
WBOY原創
2016-05-16 17:49:25960瀏覽

方法一:這是在網路上找的一個方法,可以用。但說實話,這個方法我不太懂。 。 。寫得好複雜。這樣做跟setTimeout能有多少差別?

複製程式碼 程式碼如下:

function Pause(obj, iMinSecondif (window.eventList == null ) window.eventList = new Array();
var ind = -1;
for (var i = 0; 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(numberMilliMillis) { ;
var dialogScript = 'window.setTimeout(' ' function () { $("#bgDiv").remove(); }, ' numberMillis ');';
var result = window.showModalDialog(' javascript:document.writeln(' '"<script>' dialogScript '<' '/script>")' ); <BR>} <BR>function test() { <BR>var a = 0; <BR>alert (a); <BR>pause(5000); <BR>a = 999; <BR>alert(a); <BR>} <BR><BR> <BR>方法三:這個方法是我自己寫的。因為我要實作的功能比較複雜,要循環呼叫getpath()方法。而前面的兩種方法都只能應用在順序執行的程式碼段中,無法控制迴圈。在這裡我採用了前後台結合的方法。在前台透過Ajax呼叫後台方法,直接將執行緒掛起1s,成而實作JS程式碼強制暫停。 </script>
前台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);
}


以上僅供大家參考,歡迎吐槽!
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn