[問題] node.js太忙引起的前端問題

作者: jikker (魯蛇王)   2016-05-30 14:22:25
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 ) +'%');
}
作者: mrbigmouth (大嘴先生)   2016-05-30 17:10:00
JavaScript是非同步執行的 但是JavaScript是單執行緒你的check_file function會在每個進度條該動的時候都執行到callback嗎?啊我看錯了 原來你是直接執行N次啊所以這裡的是前端的程式碼?這沒有看到你check_file, load_file運作方式沒辦法評判是哪邊出問題 如果是後端問題還要加看network等等 等等 nw.js我不熟 不好意思 無視我發言吧
作者: jikker (魯蛇王)   2016-05-30 18:12:00
用過callback 一樣會等到全不跑完 才處理process bar
作者: cs8425 (cs)   2016-05-30 19:36:00
check_file, load_file是怎寫的?你有自己包裝過吧...這不是nw.js提供的API...
作者: jikker (魯蛇王)   2016-05-31 10:35:00
check file 就是最基本的 fs.stat load file 也是readFilenw.js不是都用node.js的API嗎? 只有一些視窗控制才有自己的API

Links booklink

Contact Us: admin [ a t ] ucptt.com