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

看板Ajax作者 (魯蛇王)時間8年前 (2016/05/30 14:22), 編輯推噓1(1013)
留言14則, 3人參與, 最新討論串1/1
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

05/30 17:10, , 1F
JavaScript是非同步執行的 但是JavaScript是單執行緒
05/30 17:10, 1F

05/30 17:11, , 2F
你的check_file function會在每個進度條該動的時候都
05/30 17:11, 2F

05/30 17:12, , 3F
執行到callback嗎?
05/30 17:12, 3F

05/30 17:46, , 4F
啊我看錯了 原來你是直接執行N次啊
05/30 17:46, 4F

05/30 17:47, , 5F
所以這裡的是前端的程式碼?
05/30 17:47, 5F

05/30 17:47, , 6F
這沒有看到你check_file, load_file運作方式沒辦法評
05/30 17:47, 6F

05/30 17:47, , 7F
判是哪邊出問題 如果是後端問題還要加看network
05/30 17:47, 7F

05/30 17:49, , 8F
等等 等等 nw.js我不熟 不好意思 無視我發言吧
05/30 17:49, 8F

05/30 18:12, , 9F
用過callback 一樣會等到全不跑完 才處理process bar
05/30 18:12, 9F

05/30 19:36, , 10F
check_file, load_file是怎寫的?
05/30 19:36, 10F

05/30 19:37, , 11F
你有自己包裝過吧...這不是nw.js提供的API...
05/30 19:37, 11F

05/31 10:35, , 12F
check file 就是最基本的 fs.stat load file 也是readFile
05/31 10:35, 12F

05/31 10:37, , 13F
nw.js不是都用node.js的API嗎? 只有一些視窗控制才有自己
05/31 10:37, 13F

05/31 10:37, , 14F
的API
05/31 10:37, 14F
文章代碼(AID): #1NIzmaXP (Ajax)
文章代碼(AID): #1NIzmaXP (Ajax)