我正在尝试将 TSV 数据读入数组,并且该async函数可以很好地加载行,但是rows.push(row)当我尝试获取函数外部的行时,仍然会延迟。
有没有办法获取行数据以供在此函数之外使用?我已经尝试过承诺,但似乎它们仍然需要位于异步函数中。
我正在循环访问多个文件并读取每个文件的数据,并且我需要等到所有数据加载完毕才能继续,所以我认为将其他所有内容包装在回调中是没有意义的......
const csvToJson = require("csvtojson");
var rows = [];
const getRows = async (fileName) => {
const csvData = await csvToJson({
delimiter: "\t",
trim: true
}).fromFile(fileName);
csvData.forEach((row) => {
rows.push(row);
});
return rows;
};
getRows("myfile.tsv");
console.log(rows.length); // prints 0
setTimeout(function() {
console.log(rows.length);
}, 2000); // prints expected num of rows
// do something else with rows
doSomething(rows);
或者,使用回调,但我得到一个待处理的承诺作为回报。我知道我可以用 来解决它then,但这对我之外的我没有帮助then。
const getRows = async (callback, fileName) => {
const csvData = await csvToJson({
delimiter: "\t",
trim: true
}).fromFile(fileName);
let rows = [];
csvData.forEach((row) => {
rows.push(row);
});
return callback(rows);
};
// returns a pending promise
var csvData = getRows(rows => {
console.log("Rows in callback: " + rows.length); // expected length
return rows;
}, "myfile.tsv");
// do something else with data
doSomething(csvData);
缥缈止盈
森林海
慕容708150
相关分类