2013-01-22 77 views
1

所以我試圖在javascript中使用d3加載csv文件並嘗試使用進度條來顯示它在加載時所取得的進展。這是我有:d3 csv解析器上的進度值

d3.csv("my.csv",function(data){ 
     //do stuff with data 
    }).on("progress", function(p){ 
     //update progress bar 
     console.log(d3.event.loaded); 
    }); 

,這是所有它輸出:

13248560 

這是文件中的字節總數。我想知道如何獲得已加載的值,以便我的進度欄可以正確加載。任何人都知道如何完成這項任務?

+1

如果你的瀏覽器緩存的CSV文件,則通常由於文件在內存中加載速度很快,因此只能獲得一個進度事件。如果要測試代碼以顯示加載進度,則可能需要使用緩存中斷查詢字符串進行測試(例如,「?」+ Math.random())。但請記住在完成測試後將其刪除! – mbostock

回答

1

我認爲事件d3.event.loaded返回總大小是正常的。您是否嘗試通過以下方法獲取p中的變量"progress"上的功能?

然後獲得實際的進度,可以使用下面的問題:How to get progress from XMLHttpRequest

最終的結果應該是這樣的:

 
d3.csv("my.csv",function(data){ 
     //do stuff with data 
    }).on("progress", function(event){ 
     //update progress bar 
     if (d3.event.lengthComputable) { 
      var percentComplete = Math.round(d3.event.loaded * 100/d3.event.total); 
      console.log(percentComplete); 
     } 
    } 
});