作者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://webptt.com/cn.aspx?n=bbs/Ajax/M.1464589348.A.859.html
1F:推 mrbigmouth: JavaScript是非同步执行的 但是JavaScript是单执行绪 05/30 17:10
2F:→ mrbigmouth: 你的check_file function会在每个进度条该动的时候都 05/30 17:11
3F:→ mrbigmouth: 执行到callback吗? 05/30 17:12
4F:→ mrbigmouth: 啊我看错了 原来你是直接执行N次啊 05/30 17:46
5F:→ mrbigmouth: 所以这里的是前端的程式码? 05/30 17:47
6F:→ mrbigmouth: 这没有看到你check_file, load_file运作方式没办法评 05/30 17:47
7F:→ mrbigmouth: 判是哪边出问题 如果是後端问题还要加看network 05/30 17:47
8F:→ mrbigmouth: 等等 等等 nw.js我不熟 不好意思 无视我发言吧 05/30 17:49
9F:→ jikker: 用过callback 一样会等到全不跑完 才处理process bar 05/30 18:12
10F:→ cs8425: check_file, load_file是怎写的? 05/30 19:36
11F:→ cs8425: 你有自己包装过吧...这不是nw.js提供的API... 05/30 19:37
12F:→ jikker: check file 就是最基本的 fs.stat load file 也是readFile 05/31 10:35
13F:→ jikker: nw.js不是都用node.js的API吗? 只有一些视窗控制才有自己 05/31 10:37
14F:→ jikker: 的API 05/31 10:37