關(guān)于JS控制代碼暫停的實(shí)現(xiàn)方法分享
更新時(shí)間:2012年10月11日 23:08:46 作者:
關(guān)于JS控制代碼暫停的工作總結(jié),需要的朋友可以參考下
方法一:這是在網(wǎng)上找的一個(gè)方法,可以用。但說實(shí)話,這個(gè)方法我不怎么明白。。。寫得好復(fù)雜。這樣做跟setTimeout能有多大區(qū)別?
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");
}
}
方法二:這也是在網(wǎng)上找的,可以用。它的原理是先彈出一個(gè)窗口,因?yàn)镴S在彈出窗口時(shí),代碼會(huì)在當(dāng)前位置暫停執(zhí)行。等過了一段時(shí)間后再執(zhí)行關(guān)閉窗口函數(shù),代碼繼續(xù)執(zhí)行。這中方法非常簡單,但令人討厭的是它會(huì)彈出一個(gè)窗口。。。
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);
}
方法三:這個(gè)方法是我自己寫的。因?yàn)槲乙獙?shí)現(xiàn)的功能比較復(fù)雜,要循環(huán)調(diào)用getpath()方法。而前面的兩種方法都只能應(yīng)用在順序執(zhí)行的代碼段中,無法控制循環(huán)。在這里我采用了前后臺結(jié)合的方法。在前臺通過Ajax調(diào)用后臺方法,直接將線程掛起1s,成而實(shí)現(xiàn)JS代碼強(qiáng)制暫停。
前臺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);
}
以上僅供大家參考,歡迎吐槽!
復(fù)制代碼 代碼如下:
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");
}
}
方法二:這也是在網(wǎng)上找的,可以用。它的原理是先彈出一個(gè)窗口,因?yàn)镴S在彈出窗口時(shí),代碼會(huì)在當(dāng)前位置暫停執(zhí)行。等過了一段時(shí)間后再執(zhí)行關(guān)閉窗口函數(shù),代碼繼續(xù)執(zhí)行。這中方法非常簡單,但令人討厭的是它會(huì)彈出一個(gè)窗口。。。
復(fù)制代碼 代碼如下:
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);
}
方法三:這個(gè)方法是我自己寫的。因?yàn)槲乙獙?shí)現(xiàn)的功能比較復(fù)雜,要循環(huán)調(diào)用getpath()方法。而前面的兩種方法都只能應(yīng)用在順序執(zhí)行的代碼段中,無法控制循環(huán)。在這里我采用了前后臺結(jié)合的方法。在前臺通過Ajax調(diào)用后臺方法,直接將線程掛起1s,成而實(shí)現(xiàn)JS代碼強(qiáng)制暫停。
前臺JS:
復(fù)制代碼 代碼如下:
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:
復(fù)制代碼 代碼如下:
if (methodname == "Sleep" )//休眠
{
int time = int .Parse(req["Time"].ToString());
System.Threading. Thread.Sleep(time);
}
以上僅供大家參考,歡迎吐槽!
您可能感興趣的文章:
- JS實(shí)現(xiàn)程序暫停與繼續(xù)功能代碼解讀
- JS控制按鈕自動(dòng)切換背景顏色(可暫停)
- 用Javascript實(shí)現(xiàn)Sleep暫停功能代碼
- javascript實(shí)現(xiàn)的像java、c#之類的sleep暫停的函數(shù)代碼
- javascript中巧用“閉包”實(shí)現(xiàn)程序的暫停執(zhí)行功能
- Javascript中暫停功能的實(shí)現(xiàn)代碼
- jquery中animate的stop()方法作用實(shí)例分析
- jQuery實(shí)現(xiàn)帶滾動(dòng)線條導(dǎo)航效果的方法
- jQuery及JS實(shí)現(xiàn)循環(huán)中暫停的方法
相關(guān)文章
實(shí)現(xiàn)非常簡單的js雙向數(shù)據(jù)綁定
Angular實(shí)現(xiàn)了雙向綁定機(jī)制。所謂的雙向綁定,無非是從界面的操作能實(shí)時(shí)反映到數(shù)據(jù),數(shù)據(jù)的變更能實(shí)時(shí)展現(xiàn)到界面。本文給大家詳細(xì)介紹js雙向數(shù)據(jù)綁定,感興趣的朋友參考下2015-11-11js實(shí)現(xiàn)省級聯(lián)動(dòng)(數(shù)據(jù)結(jié)構(gòu)優(yōu)化)
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)省級聯(lián)動(dòng),數(shù)據(jù)結(jié)構(gòu)優(yōu)化,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07JS中定時(shí)器的使用及頁面切換時(shí)定時(shí)器無法清除問題的解決辦法
定時(shí)器相信大家應(yīng)該都不陌生,下面這篇文章主要給大家介紹了關(guān)于JS中定時(shí)器的使用及頁面切換時(shí)定時(shí)器無法清除問題的解決辦法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02JavaScript實(shí)現(xiàn)cookie的寫入、讀取、刪除功能
cookie 是存在有效期的,在默認(rèn)情況下,一個(gè) cookie 的生命周期就是在瀏覽器關(guān)閉的時(shí)候結(jié)束,本文給大家介紹關(guān)于javascript對于cookie的簡單操作,比如對于cookie的寫入和刪除,代碼簡單易懂,需要的朋友參考下2015-11-11ie中js創(chuàng)建checkbox默認(rèn)選中問題探討
js創(chuàng)建checkbox默認(rèn)選中在某些特殊情況下還是比較實(shí)用的,下面有個(gè)不錯(cuò)的示例,大家可以參考下2013-10-10javascript 中模板方法單例的實(shí)現(xiàn)方法
這篇文章主要介紹了javascript 中模板方法單例的實(shí)現(xiàn)方法的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-10-10支付寶小程序?qū)崿F(xiàn)類似微信多行輸入功能(思路詳解)
這篇文章主要介紹了支付寶小程序?qū)崿F(xiàn)類似微信多行輸入功能,輸入超過 8 行的時(shí)候會(huì)出現(xiàn)滾動(dòng),這樣做的好處就是輸入框不會(huì)直接頂?shù)巾撁孀铐敳?支付寶小程序?qū)崿F(xiàn)多行輸入框:使用textarea多行輸入框?qū)崿F(xiàn),感興趣的朋友一起看看吧2024-02-02