看板 Ajax 關於我們 聯絡資訊
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