作者jikker (魯蛇王)
看板Ajax
標題[問題] node.js太忙引起的前端問題
時間Mon May 30 14:22:25 2016
Hi 各位大大好 小魯最近用nw.js在寫讀取檔案的程式
我想呈現讀取的進度條,卻發現讀取檔案的時候程式太忙
完全不會理UI要做變化,可是javascript不是非同步執行的嗎?
完全不懂為什麼會出現這狀況
以下是我的程式範例,UI是使用bootstrap
for(var i=1; i<=days;i++){
d = y+'/'+m+'/'+add_zero(i);
file_path = f_path + '/' + y+'-'+ m +'-' + add_zero(i) + '_'.txt';
(function(file_path, d){
check_file(file_path , function(back){
if( back.status == 1){
load_file(file_path, function(data){
count++;
process_bar(0, days, count);
if(count > days ){
console.log(count);
}
});
}
});
})(file_path,d);
}
function process_bar(min, max, now){
$('#bar').attr('aria-valuemin', min);
$('#bar').attr('aria-valuemax', max);
$('#bar').attr('aria-valuenow', now);
$('#bar').attr('style', 'width:'+ Math.round( now/(min+max)*100 ) +'%');
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.87.162.226
※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1464589348.A.859.html
推 mrbigmouth: JavaScript是非同步執行的 但是JavaScript是單執行緒 05/30 17:10
→ mrbigmouth: 你的check_file function會在每個進度條該動的時候都 05/30 17:11
→ mrbigmouth: 執行到callback嗎? 05/30 17:12
→ mrbigmouth: 啊我看錯了 原來你是直接執行N次啊 05/30 17:46
→ mrbigmouth: 所以這裡的是前端的程式碼? 05/30 17:47
→ mrbigmouth: 這沒有看到你check_file, load_file運作方式沒辦法評 05/30 17:47
→ mrbigmouth: 判是哪邊出問題 如果是後端問題還要加看network 05/30 17:47
→ mrbigmouth: 等等 等等 nw.js我不熟 不好意思 無視我發言吧 05/30 17:49
→ jikker: 用過callback 一樣會等到全不跑完 才處理process bar 05/30 18:12
→ cs8425: check_file, load_file是怎寫的? 05/30 19:36
→ cs8425: 你有自己包裝過吧...這不是nw.js提供的API... 05/30 19:37
→ jikker: check file 就是最基本的 fs.stat load file 也是readFile 05/31 10:35
→ jikker: nw.js不是都用node.js的API嗎? 只有一些視窗控制才有自己 05/31 10:37
→ jikker: 的API 05/31 10:37