Я пытаюсь прочитать csv синхронно, используя поток и ключевые слова async, await, используя lib-fast-csv.
Однако моя функция, похоже, не возвращает желаемый результат.Я предполагаю, что функции / потоки внутри моей написанной функции занимают больше времени, чем узел рассматривает возможность использования моей функции console.log для вывода длины массивов.
Как вернуть массив output
со всеми считанными значениямииз потока CSV?
// CSV Processing
async function readCsv(csvfilepath) {
var output = []
var stream = fs.ReadStream(csvfilepath)
var parser = csv.fromStream(stream, {
headers: true
}).on("data", function (data) {
parser.pause()
t(data, output, function (err) {
// TODO: handle error
parser.resume()
});
}).on("end", function () {
console.log(output) // outputs desired array with objects
console.log(output.length) // length is 100
// return output // does not work. output == [].
});
var t = (data, out, callback) => {
out.push(data) // push the objects to that array
callback()
}
console.log(output.length) // says length = 0
return output // output is empty, should be filled with values exactly like in the 'end' event from the stream
}