2016-01-13 2 views
-1

Глядя на использование данных в CSV для создания сетевого графика. Kinda застрял в первом препятствии, так как я хочу создать массив массивов из CSV, используя PapaParse, но, похоже, не может вытолкнуть данные из papaParse в мой массив, все, что я получаю, - это пустой массив, возвращаемый в моей консоли. Может ли кто-нибудь сказать мне, что я делаю неправильно?PapaParse - Невозможно использовать данные после разбора

var dirtyNodeData = []; 
Papa.parse("http://example.com/tmp/csvfile.csv", { 
    download: true, 
    header: false, 
    complete: function(results) { 
     dirtyNodeData.push(results.data); 
    } 
}); 

console.log(dirtyNodeData);     

ответ

1

Papa.parse функция является асинхронным, так что вам нужно обрабатывать прием данных, когда вы получаете данные внутри complete функции, а не только после вызова parse. Например, вы могли бы сделать это:

var dirtyNodeData = []; 
Papa.parse("http://example.com/tmp/csvfile.csv", { 
    download: true, 
    header: false, 
    complete: function(results) { 
     dirtyNodeData.push(results.data); 
     console.log(dirtyNodeData); 
     } 
    }); 

т.е. вы можете добавить код обработчика после того, как вы толкаете данные в массиве. Вы также можете создать еще одну функцию: postReceiveCSV(), которая вызывается вместо console.log, в которой вы можете добавить все, что вам нужно сделать после успешного получения данных.

Если это не проблема, проверьте, что объект results - это то, что вы ожидаете.

+0

Спасибо, поэтому в основном, если я хочу использовать данные, я должен использовать их внутри функции, вызванной внутри «полного» обратного вызова, да? –

+0

Да, это так. Только тогда вы знаете, что данные получены –

Смежные вопросы