关于监控循环体运行进度的讨论

KimYoo 2004-11-21 01:09:49
关于监控循环体运行进度的讨论

对于一个循环体,我们要用进度条实时的监控它的进度,怎么做?

我在之前的一个话题中用了pause函数来中断循环,然后把当前循环的进度写入进度条,但是这是有问题的,因为中断循环,意味这循环时间的加长,对于量比较大的循环,会影响效率,如果不用中断,即使循环中更改了进度条的进度值,也是不会即时显示出来的,它需要到循环完成后才显示。

如果在循环之前setInterval,据我试验结果,当循环开始后,setInterval的时钟会停止工作,让循环先执行,因为js不是多线程的,所以同一时间只能运行一个函数,所以也是不能实现的。setTimeout道理也是一样。

大家看看有什么办法能够监控循环体内的运行进度并在界面上实时表现出来?
...全文
102 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
JK_10000 2004-11-22
  • 打赏
  • 举报
回复
楼上说得是,

不过从别一面看,
“本来循环只要3秒”,加上暂停和显示,会再多一秒
如果本来循环需要30秒,加上暂停和显示,会再多一秒
如果本来循环需要300秒,加上暂停和显示,也只会再多一秒,而不是再多100秒
KimYoo 2004-11-22
  • 打赏
  • 举报
回复
楼上的方法其实我已经说过了,也就是暂停循环的方法.这样的缺点是本来循环只要3秒就可以完成,但是这样一次次的暂停,有可能这个循环需要6秒,效率上不是很好.
查过MSDN,好像我的想法不可能,浏览器必定是"循环更改,一次显示".
JK_10000 2004-11-22
  • 打赏
  • 举报
回复
或:

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>New Page 1</title>
</head>

<body>
<span style="background-color:red" id=aaa ></span>
<br><input type=button value=test onclick="testFun();">
</body>

</html>
<script>
function testFun()
{
var tempValue=0;
for(var i=0;i<10000;i++)
{
tempValue+=i;
aaa.style.width=(i/100)+"%";
if((i%100)==0)
window.showModalDialog("a1.html?"+(i/100),"","dialogHeight:100px;dialogWidth:100px;");

}
}

</script>

------
a1.html:
<html>
<script language=javascript>
window.setTimeout("window.close();",10);
</script>
</html>

JK_10000 2004-11-22
  • 打赏
  • 举报
回复
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>New Page 1</title>
</head>

<body>
<span style="background-color:red" id=aaa ></span>
<br><input type=button value=test onclick="testFun();">
</body>

</html>
<script>
function testFun()
{
var tempValue=0;
for(var i=0;i<10000;i++)
{
tempValue+=i;
aaa.style.width=(i/100)+"%";
if((i%100)==0)
window.showModalDialog("about:"+(i/100)+"%"+"<script>window.setTimeout('window.close()',10)<\/sc"+"ript>","","dialogHeight:100px;dialogWidth:100px;");

}


}

</script>

87,923

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧