Re: [問題] Javascript 的迴圈似乎會先執行完畢才씠…
※ 引述《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
推
10/02 22:07, , 1F
10/02 22:07, 1F
→
10/02 23:09, , 2F
10/02 23:09, 2F
推
10/03 09:47, , 3F
10/03 09:47, 3F