作者TonyQ (骨头)
看板Web_Design
标题Re: [问题] Javascript 的回圈似乎会先执行完毕才씠…
时间Tue Oct 2 21:51:35 2007
※ 引述《logs ()》之铭言:
: 用 C/C++ 等语言写程式码的时候
: for (i=0;i<100000;i++){
: cout<<i<<endl;
: }
: 这样会按照不同电脑的执行效能
: 各有快慢地「逐行」显示
: 但是 javascript 的回圈似乎有一个特性
: 一律先算完,才出现结果
: for (i=0;i<10000;i++){
: out.innerHTML+=i+"<br>";
: }
: <textarea id=out></textarea>
: 这样的JS似乎不会一一显示,而是一次突然全部显示
no 还是分次显示
不然你可以在理面下个alert就可以看到效果了
for (i=0;i<10000;i++){
out.innerHTML+=i+"<br>";
alert('stop');
}
只是 js engine还在跑 , 而且js执行的间隔时间本来就蛮短的
所以browser 一直处於 处理中的状态
这跟一次全部显示的意义不太一样,
它是"没空分别显示"。
: 有试过呼叫空回圈函式,修改如下
: function twait(t){
: var now=new Date();
: var init=now.getTime();
: while((now.getTime()-init)<t){now=new Date();}
: }
: for (i=0;i<100;i++){
: twait(100);
: out.innerHTML+=i+"<br>";
: }
: 结果当然也是等了好久,结果一次全部秀出来......
你的twait也会锁住执行绪
(那段时间执行了大量的while结构 , 所以browser还是很忙)
你可以试着用window.setTimeout做递回
把它变成非同步的处理模型就可以了...
: 该怎麽做才能使 JS 表现出像 C/C++ 那样
: 有多少结果就马上 show 出来,不要等到最後才出现
让它的间隔时间长一点
不过相对的 , 写完全部资料的时间也会久一点.
这个可以算是某种程度的缓冲吧
--
▄▅▆▇███▇▆▅▄▃ ╰┼╯─╮ ╮
◥███████████◣ ╰┼╯=│=│
◥██████───────◣ *. ╯ ╯ ╯ の 物 语 .*
◥███████──────◣ ~ ◢◣ ◢◣
◥██████───────◤ ◥◤* 空白的世界.翼
*◥◤
◥██▁▂▃▄▅▆▇███▆▅▄▃▂▂
~telnet://tony1223.no-ip.info
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.115.76.202
1F:推 logs:所以问题出在 JS 跑太快,obj.innerHTML 跑太慢 是这样吗? 10/02 22:07
2F:→ TonyQ:问题出在浏览器无法同时执行js又显示画面.... 10/02 23:09
3F:推 fillano:如果只是要做出显示的效果,那把回圈改成setTimeout来做吧 10/03 09:47