Прочитать локальный CSV-файл с помощью FileReader, перейти к d3.csvParse - PullRequest
0 голосов
/ 28 апреля 2020

Я пытался использовать JavaScript и D3. js для:

  1. чтения локального файла .csv из внешнего интерфейса
  2. передачи данных в D3. js для визуализации

.csv файл выглядит следующим образом:

time,psi
1,210
2,220
3,400

Файл сценария выглядит следующим образом:

<input type="file" id="fileInput" accept=".csv" multiple>
<script>
  document.getElementById("fileInput").addEventListener('change', function getFile(){

    const reader = new FileReader();
    reader.onload =function fileReadCompleted(){
     console.log(reader.result);
    };
    reader.readAsText(this.files[0]);

    const text = reader.result;
    var res = d3.csvParse(text);
    console.log(res);

});
</script>  

console.log(reader.result); показывает, что я мог прочитать в файле.

typeof reader.result возвращает string

, но когда я пытаюсь передать строку reader.result в d3.csvParse, в консоли ничего не появляется.

Кто-нибудь знает, как передать результат FileReader в d3.csvParse для обработки?

Заранее спасибо.


Обновление : код был изменен на

<input type="file" id="fileInput" accept=".csv" multiple>
<script>
  document.getElementById("fileInput").addEventListener('change', function getFile(){
    const reader = new FileReader();
    var res;
    reader.onload =function fileReadCompleted(){
      res = d3.csvParse(reader.result);
      console.log(res);
    };
    reader.readAsText(this.files[0]);
    console.log(res);
});
</script>  

Первый console.log(res) показывает массив объектов.

Второй console.log(res) вне функции fileReadCompleted показывает undefined.

Просто интересно, можно ли получить доступ к данным только внутри функции fileReadCompleted?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...